uni.login(OBJECT)
登录
uni.login是一个客户端API,统一封装了各个平台的各种常见的登录方式,包括App手机号一键登陆、三方登录(微信、微博、QQ、Apple、google、facebook)、各家小程序内置登录。
平台差异说明
| App | Web | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 | 元服务 |
|---|---|---|---|---|---|---|---|---|---|
| √ | x | x | x | x | x | x | x | x | x |
大多数登录方式,都需要申请开通相关服务,具体点击下面的文档查看。
App平台支持的登录方式
小程序平台支持的登录方式
OBJECT 参数说明
| 参数名 | 类型 | 必填 | 说明 | 平台差异说明 |
|---|---|---|---|---|
| provider | String | 否 | 登录服务提供商,通过 uni.getProvider 获取,如果不设置则弹出登录列表选择界面 | |
| scopes | String/Array | 见平台差异说明 | 授权类型,默认 auth_base。支持 auth_base(静默授权)/ auth_user(主动授权) / auth_zhima(芝麻信用) | 支付宝小程序 |
| timeout | Number | 否 | 超时时间,单位ms | 微信小程序、百度小程序、京东小程序 |
| univerifyStyle | Object | 否 | 一键登录页面样式 | App 3.0.0+ |
| onlyAuthorize | Boolean | 否 | 微信登录仅请求授权认证 | App 3.2.6+ |
| success | Function | 否 | 接口调用成功的回调 | |
| fail | Function | 否 | 接口调用失败的回调函数 | |
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
onlyAuthorize说明
微信登录在未配置onlyAuthorize的情况下,调用uni.login接口用户登录凭证(code)不返回,用以换取登录信息(authResult);需要在项目manifest.json中配置的appsecret,此参数云端打包后会保存在apk/ipa中,存在参数泄露的风险;HBuilderX3.4.18+ 不再提供此参数的可视化配置。对于安全性要求较低的开发者,可以通过manifest.json -> 源码视图 -> app-plus -> distribute -> sdkConfigs -> oauth -> weixin -> 添加appsecret 配置。
success 返回参数说明
| 参数名 | 说明 | 平台差异说明 |
|---|---|---|
| authResult | 登录服务商提供的登录信息,服务商不同返回的结果不完全相同 | 微信登录配置onlyAuthorize:true则此项为空,App 3.2.6+ |
| code | 用户登录凭证。开发者需要在开发者服务器后台,使用 code 换取 openid 和 session_key 等信息 | 微信登录配置onlyAuthorize:true才会返回,App 3.2.6+、京东小程序 |
| appleInfo | 苹果登录返回的信息 | App 3.4.3+ |
| errMsg | 描述信息 |
示例
javascript
uni.login({
provider: 'weixin', //使用微信登录
success: function (loginRes) {
console.log(loginRes.authResult);
}
});