打开DCLOUD后台,找到一键登录

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_客户端

充值成功后添加应用。对公账户充值不能及时到账,可到我的账单上传回执单,加速人工审核。

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_uni-app_02

然后添加应用提交申请,我是第一天下午四五点申请,第二天早上就通过了。

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_登录页面_03

回到代码里面。创建云函数。

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_ide_04

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_客户端_05

选择一键登录模块。云函数名字随便取哈

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_uni-app_06

配置云函数。

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_ide_07

'use strict';
exports.main = async function(event, context){
  const res = await uniCloud.getPhoneNumber({
    provider: 'univerify',
    appid: context.APPID, // 客户端callFunction时携带的AppId信息
    apiKey: 'xxx', // HBuilderX 3.94及以上版本可以不传此参数,部分模板/插件的旧版本仍会检查配置,请阅读注意事项 就是说满足就删除这行  我反正删除了
    apiSecret: 'xxx', // HBuilderX 3.94及以上版本可以不传此参数,部分模板/插件的旧版本仍会检查配置,请阅读注意事项  就是说满足就删除这行 我反正删除了
    access_token: event.access_token,
    openid: event.openid
  })
  return res   //返回是 你通过接口就能拿到这个res
}

这里的key和密钥自己看自己版本填不填,不需要就删除了。

说一下这里的作用,就是前端调用接口的时候,这里接收你的数据,并返回。

有兴趣的可以一步一步打印来看就好了。


Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_ide_08


配置文件勾选一键登录

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_客户端_09

登录页面

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_客户端_10

Android PhoneNumberAuthHelper一键登录 使用 app手机一键登录_ide_11

<template>
    <button @click="loginByone">一键登录</button>
</template>
<script>
export default {
    methods: {
        //一键登录接口
        loginByone() {
            uni.login({
                provider: 'univerify',
                univerifyStyle: {
                    fullScreen: false,
                },
                success: (res) => {
                    this.getPhoneNumberInfo(res.authResult.access_token, res.authResult.openid)
                    console.log(res)
                },
                fail: (error) => {
                    uni.showToast({
                        title: error.errMsg,
                        icon: 'none'
                    })
                    console.log(error)
                }
            })
        },
        //获取手机号
        getPhoneNumberInfo(access_token, openid) {
            // 在得到access_token后,通过callfunction调用云函数
            uniCloud.callFunction({
                name: 'one_phone_login', // 你的云函数名称
                data: {
                    'access_token': access_token, // 客户端一键登录接口返回的access_token
                    'openid': openid // 客户端一键登录接口返回的openid
                }
            }).then(res => {
                console.log(res);
                // 登录成功,可以关闭一键登录授权界面了
                uni.closeAuthView()
            }).catch(err => {
                console.log(err);
                // 处理错误
            })
        },
    }
}
</script>