小程序引导用户授权获取用户信息的方法

现在使用 wx.getUserInfo 是不会在出现获取用户信息弹框的 官方文档上面是要引导用户授权 但是具体方法没有详细列出,只是说使用<button open-type="getUserInfo"></button> 来引导。

这里我将说一下引导用户授权的详细方法  先上图

以下所有的代码仅供参考,app.js中代码量太大我都是局部复制出来的

第一步

先要制作一个页面,把这个页面当做你小程序一打开展示给用户的页面  在app.json 文件中把  这个页面路径写在 pages 下第一行  。

<view class="container">
    <view class="login-icon">
        <image class="login-img" src="/images/bg2.png" style="width:{{windowWidth+'px'}};height:{{windowHeight+'px'}}"></image>
    </view>
    <!--按钮-->
    <view class="loginBtnView">
        <text>申请获取以下权限</text>
        <text>获取你的公开信息(昵称.头像等)</text>
        <button class="loginBtn" bindgetuserinfo='getUserInfo'  open-type='getUserInfo'>授权登录</button>
    </view>
</view>

 

第二部在app.js获取code。 具体如下

    //获取用户信息,
     // 小程序一打开先会运行app.js中的onLaunch函数 定义userinfo变量保存所有用户信息的 获取user这个缓存的内容
    onLaunch(options) {
        var _this=this
        var userinfo = wx.getStorageSync('user');
        // 如果不存在 调用getUserInfo()函数获取code值
        if (!userinfo) {
            this.getUserInfo();
        } else {
            // 如果存在 全局变量userInfo = wx.getStorageSync('user');缓存值中的内容
            this.globalData.userInfo = JSON.parse(userinfo);
        }
   
    },
//此函数是为了判断用户有没有获取 临时登录凭证code 通过code才能在获取 session_key 和 openid 等。
    getUserInfo: function (cb) {
        var that = this
        if (this.globalData.userInfo.code) {
            typeof cb == "function" && cb(this.globalData.userInfo)
        } else {
            wx.login({
                success: function (res) {
                    //获取code 并把它保存到globalData中
                    var code = res.code;
                    _this.globalData.code = code
                }
            });
        }
    },

第三步 就是在 第一步建的的这个页面中来响应 授权 具体如下:

var app = getApp();
Page({

    /**
     * 页面的初始数据
     */
    data: {
 
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        // 当code获取到后 就可以直接跳转到你的小程序主页了 我的小程序主页是pages下的index
        if (app.globalData.userInfo.code) {
            wx.redirectTo({
                url:'/pages/index',
            })
        }
    },

    /**
     * 获取用户信息
     */

    getUserInfo(res) {
        app.globalData.userInfo = res.detail.userInfo;
        app.globalData.userInfo.iv = res.detail.iv;
        app.globalData.userInfo.encryptedData = res.detail.encryptedData;
        app.globalData.userInfo.signature = res.detail.signature;
        app.globalData.userInfo.code = app.globalData.code;
        // 把获取的用户信息放在本地缓存中
        wx.setStorageSync('user', JSON.stringify(app.globalData.userInfo));
    },

这里我把 我的app.js 中globalData的内容给大家看下 。只要是小程序经常用到的变量都可以保存到里面

好了以上就是引导用户授权获取用户信息的步骤,有什么不清楚的,或者更好的方法可以留言

猜你喜欢

转载自blog.csdn.net/qq_41629498/article/details/81779174
今日推荐