登录的流程
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);
}
});
});
}
说明
- 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
- 调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识UnionID(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。