Back to Uni App

Sign In

docs/api/sign-in.md

2.3.322.0 KB
Original Source

uni.login(options) @login

登录

Android、iOS还未提供此功能,请在插件市场搜索替代方案。详情

login 兼容性

Web微信小程序AndroidiOSHarmonyOSHarmonyOS(Vapor)
<a style="color:unset;" href="https://vote.dcloud.net.cn/#/?name=uni-app%20x">x</a>4.41<a style="color:unset;" href="https://vote.dcloud.net.cn/#/?name=uni-app%20x">x</a><a style="color:unset;" href="https://vote.dcloud.net.cn/#/?name=uni-app%20x">x</a>4.615.0

参数

名称类型必填默认值兼容性描述
optionsLoginOptions-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -

options 的属性描述

名称类型必备默认值兼容性描述
providerstring-Web: x; 微信小程序: x; Android: x; iOS: x; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0授权登录服务提供商,通过uni.getProvider获取,如果不设置则弹出分享列表选择界面
scopesany-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x授权类型,默认 auth_base。支持 auth_base(静默授权)/ auth_user(主动授权) / auth_zhima(芝麻信用)
timeoutnumber-Web: x; 微信小程序: 2.35; Android: x; iOS: x; HarmonyOS: x超时时间,单位 ms
onlyAuthorizeboolean-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: 4.81; HarmonyOS(Vapor): 5.0微信登录仅请求授权认证
success(result: LoginSuccess) => void-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -接口调用成功的回调函数
fail(result: LoginFail) => void-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -接口调用失败的回调函数
complete(result: any) => void-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -接口调用结束的回调函数(调用成功、失败都会执行)
provider 的属性描述
合法值兼容性描述
weixinWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: 4.81; HarmonyOS(Vapor): 5.0微信登录
qqWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: xQQ登录
sinaweiboWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x新浪微博登录
xiaomiWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x小米登录
appleWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: xApple登录
huaweiWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0华为 HarmonyOS 华为账号登录

LoginSuccess 的属性值 @loginsuccess-values

名称类型必备默认值兼容性描述
errMsgstring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -描述信息
authResultany-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0登录服务商提供的登录信息,服务商不同返回的结果不完全相同
codestring-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0小程序用户临时登录凭证
anonymousCodestring-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x头条小程序当前设备标识
authCodestring-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x支付宝小程序授权码
authErrorScopeany-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x支付宝小程序登录失败的授权类型,key是授权失败的 scope,value 是对应的错误码
authSucessScopeArray<string>-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x支付宝小程序登录成功的授权 scope
appleInfoAppleLoginAppleInfo-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x苹果登录成功返回的信息

appleInfo 的属性描述

名称类型必备默认值兼容性描述
authorizationCodestring-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -应用程序用来与服务器交互的令牌
fullNameany-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -返回身份的全名
identityTokenstring-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -一个JSON Web令牌(JWT),可以安全地将用户信息传递给应用程序
realUserStatusnumber-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -指示用户是否为真人
userstring-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -验证用户的标识符

LoginFail 的属性值 @loginfail-values

名称类型必备默认值兼容性描述
errCodenumber-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -微信登录错误码
errnonumber-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -需要基础库: 2.24.0

errno 错误码,错误码的详细说明参考 Errno错误码 | | errSubject | string | 是 | - | Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: - | 统一错误主题(模块)名称 | | data | any | 否 | - | Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: - | 错误信息中包含的数据 | | cause | Error | 否 | - | Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: - | 源错误信息,可以包含多个错误,详见SourceError | | errMsg | string | 是 | - | Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: - | |

errCode 的属性描述

合法值兼容性描述
1310500Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -未找到微信 APPID
1310501Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -APPID、appIdentifier、bundleId不匹配
1310502Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -微信可能未安装
1310503Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -未获取到授权凭证
1310504Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -未获取到授权 code
1310505Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -授权凭证无效
1310506Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -获取用户信息失败
1310507Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -微信 API 请求失败
1310508Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -微信登录state验证失败
1310509Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -用户取消登录
1310510Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -超时时间必须为正整数
1310511Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -获取用户信息请求超时
1001502040Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -登录请求可能被跨站攻击

::: warning 注意

  • HarmonyOS 平台需要额外的配置,详见HarmonyOS平台接入微信SDK
    • 配置 queryScheme: "queryScheme": ["weixin"] 请勿配置 wxopensdk。已在 @tencent/[email protected] 实测配置 wxopensdk 后登录无法回调
    • 配置 actions: "actions": [ "action.system.home", "wxentity.action.open" ] :::
<!-- UTSAPIJSON.login.example -->

参见

uni.getUserInfo(options) @getuserinfo

获取用户信息

getUserInfo 兼容性

Web微信小程序AndroidiOSHarmonyOSHarmonyOS(Vapor)
<a style="color:unset;" href="https://vote.dcloud.net.cn/#/?name=uni-app%20x">x</a>4.41<a style="color:unset;" href="https://vote.dcloud.net.cn/#/?name=uni-app%20x">x</a><a style="color:unset;" href="https://vote.dcloud.net.cn/#/?name=uni-app%20x">x</a>4.615.0

参数

名称类型必填默认值兼容性描述
optionsGetUserInfoOptions-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -

options 的属性描述

名称类型必备默认值兼容性描述
providerstring-Web: x; 微信小程序: x; Android: x; iOS: x; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0授权登录服务提供商,通过uni.getProvider获取
withCredentialsboolean-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: x是否带上登录态信息,仅微信小程序生效。
langstring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: x指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。默认为en,仅微信小程序生效。
timeoutnumber-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: x超时时间,单位 ms
success(result: GetUserInfoSuccess) => void-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -接口调用成功的回调函数
fail(result: GetUserInfoFail) => void-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -接口调用失败的回调函数
complete(result: any) => void-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -接口调用结束的回调函数(调用成功、失败都会执行)
provider 的属性描述
合法值兼容性描述
weixinWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x微信登录。 - 推荐: 使用 uniCloud 提供的云函数登录方式,避免在客户端暴露 appSecret。 1. 获取微信openid 2. 获取App平台微信登录用户信息
qqWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: xQQ登录
sinaweiboWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x新浪微博登录
xiaomiWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: x小米登录
appleWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: xApple登录
huaweiWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0华为 HarmonyOS 华为账号登录

GetUserInfoSuccess 的属性值 @getuserinfosuccess-values

名称类型必备默认值兼容性描述
userInfoUserInfo-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0用户信息对象,不包含 openid 等敏感信息
rawDatastring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: x不包括敏感信息的原始数据字符串,用于计算签名。
signaturestring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: x使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,仅微信小程序生效。
encryptedDatastring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: x包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法,仅微信小程序生效。
ivstring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: x加密算法的初始向量,详细见加密数据解密算法,仅微信小程序生效。
errMsgstring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -描述信息
cloudIDstring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -需要基础库: 2.7.0

敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见云调用直接获取开放数据 |

userInfo 的属性描述

名称类型必备默认值兼容性描述
nickNamestring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -用户昵称
openIdstring-Web: x; 微信小程序: x; Android: x; iOS: x; HarmonyOS: 4.61; HarmonyOS(Vapor): 5.0该服务商唯一用户标识
avatarUrlstring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -用户头像
gendernumber-Web: x; 微信小程序: x; Android: x; iOS: x; HarmonyOS: 4.81; HarmonyOS(Vapor): 5.0用户性别(仅微信登录支持)
citystring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -
countrystring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -
languagestring-Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: -可选值:
  • 'en': 英文;
  • 'zh_CN': 简体中文;
  • 'zh_TW': 繁体中文; | | province | string | 否 | - | Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: - | |
gender 的属性描述
合法值兼容性描述
0Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -
1Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -
2Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -保密
0Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: --
1Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: --
2Web: x; 微信小程序: 4.41; Android: x; iOS: x; HarmonyOS: --
language 的属性描述
合法值兼容性描述
enWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: --
zh_CNWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: --
zh_TWWeb: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: --

GetUserInfoFail 的属性值 @getuserinfofail-values

名称类型必备默认值兼容性描述
errCodenumber-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -统一错误码
errSubjectstring-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -统一错误主题(模块)名称
dataany-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -错误信息中包含的数据
causeError-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -源错误信息,可以包含多个错误,详见SourceError
errMsgstring-Web: x; 微信小程序: -; Android: x; iOS: x; HarmonyOS: -
<!-- UTSAPIJSON.getUserInfo.example -->

参见

示例

示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见

该 API 不支持 Web,请运行 hello uni-app x 到 App 平台体验

uvue
<template>
  <!-- #ifdef APP -->
  <scroll-view style="flex:1">
  <!-- #endif -->
    <page-head :title="title"></page-head>
    <view class="uni-padding-wrap uni-common-mt">
      <view class="uni-container">
        <view class="uni-center">登录状态</view>
        <view v-if="userInfo == null">
          <template v-if="logging">
            <view class="uni-center uni-common-mt">登录中...</view>
          </template>
          <template v-else>
            <view class="uni-center uni-common-mt">未登录</view>
            <view class="uni-center uni-common-mt">请点击下面按钮登录</view>
          </template>
        </view>
        <view v-else>
          <view class="uni-center uni-common-mt">
            <image :src="userInfo.avatarUrl" style="width: 60px;height: 60px;border-radius: 30px;"></image>
          </view>
          <view class="uni-center uni-common-mt">Hello, {{userInfo.nickName}}</view>
        </view>
      </view>
      <view class="uni-btn-v uni-common-mt">
        <!-- #ifdef APP-HARMONY -->
        <button type="primary" @click="hwLogin">华为登录</button>
        <button class="uni-common-mt" type="primary" @click="wxLogin">微信登录</button>
        <!-- #endif -->
        <button class="uni-common-mt" @click="clear">清空</button>
      </view>
    </view>
  <!-- #ifdef APP -->
  </scroll-view>
  <!-- #endif -->
</template>

<script setup lang="uts">
  import { state, setUserInfo, UserInfo } from '@/store/index.uts'

  const title = ref('OAuth')
  const logging = ref(false)
  const userInfo = computed(() => state.userInfo)
  const testUserInfo = ref<UserInfo | null>(null)

  const clear = () => {
    setUserInfo(null)
    testUserInfo.value = null
    logging.value = false
  }

  const hwLogin = () => {
    logging.value = true
    if (userInfo.value != null) return
    uni.login({
      provider: 'huawei',
      success() {
        uni.getUserInfo({
          provider: 'huawei',
          success(res) {
            console.log('获取用户信息成功')
            const info : UserInfo = {
              nickName: res.userInfo.nickName,
              avatarUrl: res.userInfo.avatarUrl
            }
            testUserInfo.value = info
            setUserInfo(info)
            logging.value = false
          },
          fail(err) {
            clear()
            console.log('获取用户信息错误: ', JSON.stringify(err));
          }
        })
      },
      fail(err) {
        clear()
        console.log('获取用户信息错误: ', JSON.stringify(err));
      }
    })
  }

  const wxLogin = () => {
    uni.showLoading({
      title: '微信登录...'
    })
    uni.login({
      provider: 'weixin',
      success(res) {
        uni.hideLoading()
        uni.showModal({
          title: '微信登录成功',
          content: `code: ${res.code}`
        })
      },
      fail(err) {
        uni.hideLoading()
        uni.showToast({
          title: err.errMsg
        })
      }
    })
  }

  function getTestUserInfo() {
    return testUserInfo.value
  }

  defineExpose({
    getTestUserInfo,
    hwLogin,
    setUserInfo
  })
</script>

<style>

</style>

通用类型

GeneralCallbackResult

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -错误信息