微信小程序

1.如何换取openId?2.如何注册?

2019-04-16  本文已影响201人  李chun

1.如何换取openId?

很简单就是:
1)
使用wx.login来得到用户的code
2)
把code给post到后端,让后端去小程序服务器换取openId,后端就返回给我。
就这么简单。就是把code给post到后端就返回openId了

// 调用登录接口拿到用户的登录凭证(code)。
        wx.login({
            success: res => {
                console.log('---app.js的wx.login res---', res);//用到的是res.code
                //res.code比如"023zcdO92W5VPK0jvOO92dO1O92zcdOA",是用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用 code2Session,使用 code 换取 openid 和 session_key 等信息
                // 发送 res.code 到后台换取 openId, sessionKey, unionId
                that.getOpenId(res.code);//把凭证(code)发去后端,期望返回openId,并储存到了全局app.js.globalData.opencode。//可在其他地方通过getApp().globalData.opencode拿到
            }
        });

//获取openId
    //发送code到后端服务器,如成功则返回自定义登录态,就包括openId
    getOpenId: function (code) {
        console.log('---app.js里开始拿用户code去后端换取openId---');
        var that = this;
        wx.request({
            url: 'http://192.168.1.208:8102/clnj/' + 'customerApp/getOpenIdByCode.do',

            data: { 'code': code },
            method: 'POST',
            header: that.globalData.header,
            success:  (res) => {
                console.log('--app.js的getOpenId方法后端返回res--', res);
                // console.log('--app.js的getOpenId方法获取openId的success回调res.data.openid--', res.data.data.openid);
                // that.globalData.openId = res.data.data.openid;//可在其他地方通过getApp().globalData.opencode拿到
                console.log('---看看that.globalData.openId是否有值---', that.globalData.openId);
            },
            fail:  () =>  {
                // fail
            },
            complete:  () =>  {
                // complete
            }
        })
    }

2.如何注册?

1)
使用<button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">点击授权</button>来弹窗让用户授权。用户点确定就可以从事件对象里看到

    //授权,用户授权“用户信息”功能,用户点击首页的授权按钮然后在弹窗里选择yes/no才触发。
    bindGetUserInfo: function(e) {
        console.log('----用户在授权选择里点击了yes/on!,e:----', e);
        var _this = this;
        console.log('--index/index.js的bindGetUserInfo获取用户信息--', e.detail.userInfo);
        if (e.detail.userInfo) { //如果有这个值,说明用户点选yes了,授权设置里就有了“用户信息”的功能权限
            //用户按了允许授权按钮
            _this.setData({
                shouquandisplay: "none"
            })
            wx.showTabBar({}) //显示导航栏
        } else {
            //用户按了拒绝按钮
            wx.showModal({
                title: '授权提醒',
                content: '请在“点击授权”后点击“允许”以便继续进行使用',
                showCancel: false,
                confirmText: "好的",
                success(res) {
                    if (res.confirm) {} else if (res.cancel) {}
                }
            })
        }
    },

先让用户授权“获取用户信息”功能,才能使用wx.getUserInfo。
2)
把用户openId给post到后盾,让后端检测用户是否注册了。注册了就没事。没有注册,就执行下面步骤的注册。
3)
使用wx.getUserInfo来得到用户的nickName,gender,avatarUrl, openId,
把这些post到后端,让后端给注册这个用户。
4)
返回数据,前端确认post成功就行,不用做什么其他处理。这就是为了让后端注册这个用户就行了。

原来注册对于前端是没有 什么用的,是对后端很有用

上一篇 下一篇

猜你喜欢

热点阅读