小程序登录

121 阅读1分钟

登录的流程

image.png

uni.getProvider(object)获取服务供应商

地址:uniapp.dcloud.net.cn/api/plugins…

uni.getProvider({
    service: 'oauth', // oauth是授权登录
    success: (result) => {
        let data = []
        result.provider.map((value) => {
            switch (value) {
                case 'weixin':
                    data.push({
                        id: 'weixin',
                        providerName : '微信登录',
                        icon : 'icon-weixin',
                        color : 'bg-success'
                    })
                    break;
                case 'qq':
                    data.push({
                        id: 'qq',
                        providerName : 'QQ登录',
                        icon : 'icon-QQ',
                        color : 'bg-primary'
                    })
                    break;
                case 'sinaweibo':
                    data.push({
                        id: 'sinaweibo',
                        providerName : '新浪微博登录',
                        icon : 'icon-xinlangweibo',
                        color : 'bg-warning'
                    })
                    break;
            }
        });
        this.providerList = data
    },
    fail: (error) => {
            console.log('获取登录通道失败', error);
    }
});

wx.login()获取临时登录凭证 code

    /**
     * 登录
     */
    wxLogin(provider) {
            return new Promise((resolve, reject) => {
                    uni.login({
                            provider: provider,
                            // 成功回调
                            success: res => {
                                    if (res.errMsg !== 'login:ok') {
                                            throw '登录失败!';
                                    }
                                    return resolve(res);
                            },
                            // 失败回调
                            fail: err => {
                                    return reject(err);
                            }
                    });
            });
    }

说明

  1. 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
  2. 调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识UnionID(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key

之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

链接: developers.weixin.qq.com/miniprogram…