uniapp实现微信登录或者QQ登录
无论是哪种登录, 都要用到uni.login
一. 获取服务供应商
在实现登录前,先查看一下可以使用哪种方式登录. 在APP平台, 可用的服务商, 是打包环境中配置的服务商, 与手机端是否安装了该服务商的APP没有关系
uni.getProvider({
service: 'oauth',
success: function (res) {
console.log(res.provider);
}
});
- service值说明
- oauth: 授权登录
- share: 分享
- payment: 支付
- push: 推送
- success返回参数说明
- service: 服务类型(string)
- provider: 得到的服务供应商(Array)
- provider在不同服务类型下可能的取值说明
- service: oauth
- provider: weixin 微信登录
- provider: qq QQ登录
- provider: sinaweibo 新浪微博登录
- provider: xiaomi 小米登录
- provider: apple Apple登录 - service: share
- provider: sinaweibo 新浪微博分享
- provider: qq QQ分享
- provider: weixin 分享微信消息、朋友圈及微信小程序 - service: payment
- provider: alipay 支付宝支付
- provider: wxpay 微信支付
- provider: baidu 百度收银台
- provider: appleiap 苹果应用内支付 - service: push
- provider: unipush
- provider: igexin 个推
- provider: mipush 小米推送
二. 使用uni.login登录
uni.login({
provider: 'weixin',
success: function (loginRes) {
console.log("微信登录")
console.log(loginRes)
console.log(loginRes.code)
}
});
- object参数说明
- provider: 登录服务提供商(如果不设置则弹出登录列表选择界面)
- scopes: 授权类型, 默认auth_base. auth_base(静默授权) / auth_auser(主动授权) / auth_zhima(芝麻信用)
- timeout: 超时时间(单位ms)
- success: 成功的回调函数
- fail: 失败的回调函数
- complete: 接口调用结束的回调函数(调用成功失败都会执行)
- success返回参数说明
- authResult: 登录服务商提供的登录信息, 服务商不同返回的结果不完全相同
- code: 小程序专有, 用户登录凭证. 开发者需要在开发者服务器后台, 使用code换取openid和session_key等信息
- errMsg: 描述信息
三. 获取用户信息
uni.login({
provider: 'weixin',
success: function (loginRes) {
console.log(loginRes);
// 获取用户信息
uni.getUserInfo({
provider: 'weixin',
success: function (infoRes) {
console.log(infoRes);
}
});
}
});
- object参数说明
- provider: 登录服务提供商
- withCredentials: 是否带上登录态信息
- leng: 指定返回用户信息的语言, 默认为en, 中文为zh_CN
- timeout: 超时时间, 单位ms
- success:成功回调函数
- fail:失败回调函数
- complete:接口调用结束的回调函数
- success返回参数说明
- userInfo: 用户信息对象
- rawData: 不包括敏感信息的原始数据字符串, 用于计算签名
- signature: 使用sha1(rawData + sessionkey)得到字符串, 用于校验用户信息
- encryptedData: 包括敏感数据在内的完整用户信息的加密数据,
- iv: 加密算法的初始用量
- errMsg: 描述信息
- userInfo参数说明
- nickName: 用户昵称
- openId: 该服务商唯一用户标识
- avatarUrl: 用户头像