 
  
   简体中文 
 登录
uni.login是一个客户端API,统一封装了各个平台的各种常见的登录方式,包括App手机号一键登陆、三方登录(微信、微博、QQ、Apple、google、facebook)、各家小程序内置登录。
除了前端API,DCloud还提供了uni-id,这是一个云端一体的、完整的、账户开源框架。不仅包括客户端API,还包括前端页面、服务器代码、管理后台等所有与登录账户有关的服务,包括短信验证码、密码加密存储、忘记密码、头像更新等所有常见账户相关功能。
平台差异说明
| App | Web | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 | 元服务 | 小红书小程序 | 
|---|---|---|---|---|---|---|---|---|---|---|
| √ | x | √ | √ | √ | √ | √ | √ | √ | √ | √ | 
| HarmonyOS | 
|---|
| HBuilderX 4.31 | 
大多数登录方式,都需要申请开通相关服务,具体点击下面的文档查看。
Web平台常见的登录包括用户名密码、短信验证码、pc端微信扫描、微信公众号登录。这些没有封装在 uni.login API中,但都封装在了uni-id中。请另行参考uni-id
如不使用uni-id,微信内嵌浏览器运行H5版时,可通过js sdk实现微信登录,需要引入一个单独的js,详见
| 参数名 | 类型 | 必填 | 说明 | 平台差异说明 | 
|---|---|---|---|---|
| provider | String | 否 | 登录服务提供商,通过 uni.getProvider 获取,如果不设置则弹出登录列表选择界面 | |
| scopes | String/Array | 见平台差异说明 | 授权类型,默认 auth_base。支持 auth_base(静默授权)/ auth_user(主动授权) / auth_zhima(芝麻信用) | 支付宝小程序 | 
| timeout | Number | 否 | 超时时间,单位ms | 微信小程序、百度小程序、京东小程序、小红书小程序 | 
| univerifyStyle | Object | 否 | 一键登录页面样式 | App 3.0.0+、 HarmonyOS 不支持 | 
| onlyAuthorize | Boolean | 否 | 微信登录仅请求授权认证 | App 3.2.6+、 HarmonyOS 不支持 | 
| 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 | 描述信息 | 
示例
uni.login({
  provider: 'weixin', //使用微信登录
  success: function (loginRes) {
    console.log(loginRes.authResult);
  }
});
获取宿主 App 登录凭证(Authorization Code)
平台差异说明
| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 | 元服务 | 小红书小程序 | 
|---|---|---|---|---|---|---|---|---|---|---|
| x | x | x | x | √ | x | x | x | x | x | x | 
OBJECT 参数说明
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| timeout | Number | 否 | 超时时间(单位:ms) | 
| success | Function | 否 | 接口调用成功的回调函数 | 
| fail | Function | 否 | 接口调用失败的回调函数 | 
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
success 返回参数说明
| 参数名 | 类型 | 平台差异说明 | 
|---|---|---|
| code | String | 用户登录凭证(有效期十分钟),开发者需要在开发者服务器后台调用 API ,使用 code 换取 session_key 等信息。用户登录凭证 code 只能使用一次。 | 
检查登录状态是否过期
1.6.0 新增
平台差异说明
| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 快手小程序 | 京东小程序 | 元服务 | 小红书小程序 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| x | x | √ | x | √ | √ | √ | √ | √ | x | x | √ | 
| 属性 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| success | function | 否 | 接口调用成功的回调函数 | 
| fail | function | 否 | 接口调用失败的回调函数 | 
| complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
微信小程序端用户头像昵称获取规则已调整,参考 用户信息接口调整说明、小程序用户头像昵称获取规则调整公告 支付宝小程序获取用户头像昵称规则已调整,将在 2024年09月15日正式生效。参考 关于小程序用户头像昵称获取规则调整公告
获取用户信息。
平台差异说明
| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 | 元服务 | 小红书小程序 | 
|---|---|---|---|---|---|---|---|---|---|---|
| √ | x | √ | √ | √ | √ | √ | √ | √ | x | √ | 
| HarmonyOS | 
|---|
| HBuilderX 4.31 | 
注意:
OBJECT 参数说明
| 参数名 | 类型 | 必填 | 说明 | 平台差异说明 | 
|---|---|---|---|---|
| provider | String | 否 | 登录服务提供商,通过 uni.getProvider 获取 | |
| withCredentials | Boolean | 否 | 是否带上登录态信息。 | 微信小程序、抖音小程序、飞书小程序、快手小程序 | 
| lang | String | 否 | 指定返回用户信息的语言,默认为 en。更多值请参考下面的说明。 | 微信小程序 | 
| timeout | Number | 否 | 超时时间,单位 ms。 | 微信小程序 | 
| success | Function | 否 | 接口调用成功的回调 | |
| fail | Function | 否 | 接口调用失败的回调函数 | |
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
lang 值说明
| 值 | 说明 | 
|---|---|
| zh_CN | 简体中文 | 
| zh_TW | 繁体中文 | 
| en | 英文 | 
注意: 在小程序 withCredentials 为 true 时或是在 App 调用 uni.getUserInfo,要求此前有调用过 uni.login 且登录态尚未过期。微信基础库2.10.4版本对用户信息相关接口进行了调整,使用 uni.getUserInfo 获取得到的 userInfo 为匿名数据,建议使用 uni.getUserProfile 获取用户信息。
success 返回参数说明
| 参数 | 类型 | 说明 | 平台差异说明 | 
|---|---|---|---|
| userInfo | OBJECT | 用户信息对象 | |
| rawData | String | 不包括敏感信息的原始数据字符串,用于计算签名。 | 微信小程序、抖音小程序、飞书小程序、快手小程序、京东小程序 | 
| signature | String | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息。 | 微信小程序、抖音小程序、飞书小程序、快手小程序、京东小程序 | 
| encryptedData | String | 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法。 | 微信小程序、抖音小程序、飞书小程序、快手小程序 | 
| iv | String | 加密算法的初始向量,详细见加密数据解密算法。 | 微信小程序、抖音小程序、飞书小程序、快手小程序 | 
| errMsg | String | 描述信息 | 
userInfo 参数说明
| 参数 | 类型 | 说明 | 平台差异说明 | 
|---|---|---|---|
| nickName | String | 用户昵称 | |
| openId | String | 该服务商唯一用户标识 | App | 
| avatarUrl | String | 用户头像 | |
| gender | String | 用户性别:0-男,1-女,2-保密 | 京东小程序 | 
除了以上三个必有的信息外,不同服务供应商返回的其它信息会存在差异。
App端还支持更多登录相关API,如logout,详见
App端登录相关的SDK需要在manifest中配置:
uni.getProvider可以得到配置的结果列表,注意这里返回的是manifest配置的,与手机端是否安装微信、QQ、微博无关。如果手机端未安装QQ、微博,调用时会启动这些平台的wap页面登录,如果已安装相应客户端,会启动它们的客户端登录。
示例
uni.login({
  provider: 'weixin',
  success: function (loginRes) {
    console.log(loginRes.authResult);
    // 获取用户信息
    uni.getUserInfo({
      provider: 'weixin',
      success: function (infoRes) {
        console.log('用户昵称为:' + infoRes.userInfo.nickName);
      }
    });
  }
});
微信小程序端基础库2.27.1及以上版本,wx.getUserProfile 接口被收回,详见《小程序用户头像昵称获取规则调整公告》。
获取用户信息。每次请求都会弹出授权窗口,用户同意后返回 userInfo。
平台差异说明
| App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 | 元服务 | 小红书小程序 | 
|---|---|---|---|---|---|---|---|---|---|---|
| x | x | √(基础库2.10.4) | x | x | √(基础库2.30.0) | x | x | x | x | √ | 
注意:
抖音从基础库 2.30.0 开始支持本方法,低版本需做兼容处理。详见
OBJECT 参数说明
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| desc | String | 是 | 声明获取用户个人信息后的用途,不超过30个字符 | 
| lang | String | 否 | 指定返回用户信息的语言,默认为 en。更多值请参考下面的说明。 | 
| success | Function | 否 | 接口调用成功的回调 | 
| fail | Function | 否 | 接口调用失败的回调函数 | 
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
lang 值说明
| 值 | 说明 | 
|---|---|
| zh_CN | 简体中文 | 
| zh_TW | 繁体中文 | 
| en | 英文 | 
注意: 可以使用 if(uni.getUserProfile) 判断uni.getUserProfile是否可用。
success 返回参数说明
| 参数 | 类型 | 说明 | 
|---|---|---|
| userInfo | OBJECT | 用户信息对象 | 
| rawData | String | 不包括敏感信息的原始数据字符串,用于计算签名。 | 
| signature | String | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息。 | 
| encryptedData | String | 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法。 | 
| iv | String | 加密算法的初始向量,详细见加密数据解密算法。 | 
| cloudID | String | 敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见云调用直接获取开放数据 | 
| errMsg | String | 描述信息 | 
userInfo 参数说明
| 参数 | 类型 | 说明 | 
|---|---|---|
| nickName | String | 用户昵称 | 
| avatarUrl | String | 用户头像 | 
| gender | Number | 用户性别 | 
| country | String | 用户所在国家 | 
| province | String | 用户所在省份 | 
| city | String | 用户所在城市 | 
| language | String | 显示 country,province,city 所用的语言 | 
gender 的合法值
| 值 | 说明 | 
|---|---|
| 0 | 未知 | 
| 1 | 男性 | 
| 2 | 女性 | 
language 的合法值
| 值 | 说明 | 
|---|---|
| en | 英文 | 
| zh_CN | 简体中文 | 
| zh_TW | 繁体中文 | 
预登录。用于App手机号一键登录。
平台差异说明
| App | HarmonyOS Next | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 | 元服务 | 小红书小程序 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.0.0+ | x | x | x | x | x | x | x | x | x | x | x | 
OBJECT 参数说明
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| provider | String | 否 | 登录服务提供商,通过 uni.getProvider 获取,目前仅支持一键登录 | 
| success | Function | 否 | 接口调用成功的回调 | 
| fail | Function | 否 | 接口调用失败的回调函数 | 
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
关闭一键登录页面。
按照中国移动、中国联通、中国电信等运营商的要求,一键登录必须有界面。可用此API关闭页面。
平台差异说明
| App | HarmonyOS Next | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 | 元服务 | 小红书小程序 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.0.0+ | x | x | x | x | x | x | x | x | x | x | x | 
获取一键登录条款勾选框状态。
平台差异说明
| App | HarmonyOS Next | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 | 元服务 | 小红书小程序 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.2.3+ | x | x | x | x | x | x | x | x | x | x | x | 
OBJECT 参数说明
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| success | Function | 否 | 接口调用成功的回调 | 
| fail | Function | 否 | 接口调用失败的回调函数 | 
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
success 返回参数说明
| 参数 | 类型 | 说明 | 
|---|---|---|
| state | Boolean | 一键登录条款勾选框状态 | 
| errMsg | String | 描述信息 | 
获取全局唯一的一键登录管理器 univerifyManager
平台差异说明
| App | HarmonyOS Next | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 抖音小程序、飞书小程序 | QQ小程序 | 快手小程序 | 京东小程序 | 元服务 | 小红书小程序 | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ (3.2.13+) | 4.61 | x | x | x | x | x | x | x | x | x | x | 
univerifyManager 方法说明
| 方法名 | 类型 | 说明 | 
|---|---|---|
| login | Function | 一键登录 | 
| preLogin | Function | 一键登录预登录 | 
| close | Function | 关闭一键登陆页面 | 
| getCheckBoxState | Function | 获取一键登录条款勾选框状态 | 
| onButtonsClick | Function | 订阅一键登录自定义按钮点击事件; HarmonyOS 不支持 | 
| offButtonsClick | Function | 取消订阅一键登录自定义按钮点击事件; HarmonyOS 不支持 | 
使用示例
// 使用时不需要传递 provider
const univerifyManager = uni.getUniverifyManager()
// 预登录
// 参数和 uni.preLogin 相同
univerifyManager.preLogin()
// 调用一键登录弹框
// 仅需传参 univerifyStyle 即可
univerifyManager.login({
  univerifyStyle: {
    "fullScreen": true,
    "buttons": {
        "iconWidth": "45px",
        "list": [
            {
                "provider": "apple",
                "iconPath": "/static/apple.png"
            },
            {
                "provider": "weixin",
                "iconPath": "/static/wechat.png"
            }
        ]
    }
  },
  success (res) {
    console.log('login success', res)
  }
})
const callback = (res) => {
  // 获取一键登录弹框协议勾选状态
  // 参数和 uni.getCheckBoxState 相同
  univerifyManager.getCheckBoxState({
    success(res) {
      console.log("getCheckBoxState res: ", res);
      if (res.state) {
        // 关闭一键登录弹框
        // 参数和 uni.closeAuthView 相同
        univerifyManager.close()
      }
    }
  })
}
// 订阅自定义按钮点击事件
univerifyManager.onButtonsClick(callback)
// 取消订阅自定义按钮点击事件
univerifyManager.offButtonsClick(callback)
getUniverifyManager().login 时,其中 univerifyStyle 参数 只支持传递(支持情况和 uni-app x 一键登录 login 一致):
fullScreen 是否全屏显示一键登录弹框logoPath 一键登录弹框顶部 logo 图片路径loginBtnText 一键登录按钮文案一键登录 -> 应用管理 添加应用,并将所添加应用的包名配置在 manifest 中才可以调试运行,否则运行报错modules.json5 中配置以下权限:"requestPermissions": [
  {
    //允许应用程序联网,用于访问网关和认证服务器
    "name": "ohos.permission.INTERNET",
  },
  {
    //获取网络状态,判断是否数据、wifi等
    "name": "ohos.permission.GET_NETWORK_INFO"
  },
  {
    //允许获取wifi信息
    "name": "ohos.permission.GET_WIFI_INFO"
  },
  {
    //允许应用配置数据网络
    "name": "ohos.permission.SET_NETWORK_INFO"
  },
  {
    //用于创建唯一的gyuid标识
    "name": "ohos.permission.APP_TRACKING_CONSENT",
    "usedScene": {
      "abilities": [
        "EntryAbility"
      ]
    },
    "reason": "$string:gy_oaid_tracking" // 此项需要在 `harmony-config/AppScope/resources/base/element/string.json` 中配置,[配置文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/resource-categories-and-access-V5#%E8%B5%84%E6%BA%90%E7%BB%84%E7%9B%AE%E5%BD%95?ha_source=Dcloud&ha_sourceId=89000448)
  }
]
"metadata": [
  {
    "name": "GT_INSTALL_CHANNEL",
    "value": "CHANNEL" // 填写你想要的渠道名
  }
]