uni-app实现一键登录(企业版:因为获取手机号功能**目前针对非个人开发者**,所以个人开发者无法唤起获取手机号界面)

微信授权登录

用户在使用小程序时,其实已登录微信,其本质上就是:微信授权给小程序读取微信用户信息
在这里插入图片描述

获取登录凭证(企业版)

前端:调用 wx.login() 接口获取登录凭证(code)。

后端:通过凭证(code)向微信服务器生成用户登录态

<script setup lang="ts">
import { onLoad } from '@dcloudio/uni-app'

// 获取 code 登录凭证
let code = ''
onLoad(async () => {
  const res = await wx.login()
  code = res.code
})
</script>

:::

warning 注意
code 获取不要在 getphonenumber 事件回调函数调用,否则可能会出现错误!!!
用户登录态,不包含用户昵称、性别、手机号码等信息,作用是用于后端与微信服务器通讯

获取手机号码

出于安全限制,小程序【规定】想获取用户的手机号,必须由用户主动【点击按钮】并【允许申请】才可获取加密的手机号信息。

前端:提供 open-type 按钮,在事件处理函数中获取加密的手机号信息。

后端:解密手机号信息,把手机号和用户登录态关联在一起。
在这里插入图片描述
参考代码


<script setup lang="ts">
import { postLoginWxMinAPI } from '@/services/login'
import { onLoad } from '@dcloudio/uni-app'
import { useMemberStore } from '@/stores/modules/member'
let useMemberStores = useMemberStore()
// 获取 code 登录凭证
let code = ''
onLoad(async () => {
  const res = await wx.login()
  code = res.code
})

// 获取用户手机号码
const onGetphonenumber: UniHelper.ButtonOnGetphonenumber = async (ev) => {
  // 获取参数
  const encryptedData = ev.detail.encryptedData!
  const iv = ev.detail.iv!
  // 登录请求
let res= await postLoginWxMinAPI({ code, encryptedData, iv })
 // 登录成功保存用户信息
  useMemberStores.setProfile(res.result)
  // 成功提示
  uni.showToast({ icon: 'none', title: '登录成功' })
  setTimeout(() => {
    // 页面跳转
    uni.switchTab({ url: '/pages/my/my' })
  }, 500)
}
</script>

<template>
  <view class="viewport">
    <view class="login">
      <button class="button phone" open-type="getPhoneNumber" @getphonenumber="onGetphonenumber">
        <text class="icon icon-phone"></text>
        手机号快捷登录
      </button>
    </view>
  </view>
</template>

::: danger 常见问题

Q:为什么我无法唤起获取手机号的界面?

A:获取手机号功能目前针对非个人开发者,所以个人开发者无法唤起获取手机号界面 详见文档

:::

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在uniapp中使用企业微信小程序登录获取用户信息,需要完成以下步骤: 1. 在企业微信开发者中心创建小程序,并获取AppID和AppSecret。 2. 在uniapp中引入wx-server-sdk插件,并初始化: ``` import { init } from 'wx-server-sdk' init({ env: 'your-env-id', traceUser: true, }) ``` 3. 创建云函数,用于获取企业微信小程序登录凭证code: ``` const cloud = require('wx-server-sdk') const qywx = require('wx-server-sdk/qywx') exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const code = event.code const res = await qywx.getQrCodeLoginInfo({ appid: 'your-appid', secret: 'your-appsecret', code: code, }) return res } ``` 4. 在uniapp中调用云函数,获取登录凭证code: ``` wx.qy.login({ success: res => { const code = res.code // 调用云函数,获取登录凭证信息 uniCloud.callFunction({ name: 'getQrCodeLoginInfo', data: { code: code }, success: res => { const loginInfo = res.result console.log(loginInfo) }, fail: err => { console.log(err) } }) }, fail: err => { console.log(err) } }) ``` 5. 使用登录凭证code获取用户信息: ``` wx.qy.getUserInfo({ withCredentials: true, success: res => { const userInfo = res.userInfo console.log(userInfo) }, fail: err => { console.log(err) } }) ``` 注意:在使用企业微信小程序登录时,需要在企业微信管理后台配置登录授权域名和JS安全域名,并且需要在小程序中配置企业微信授权登录的AppID和AppSecret。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值