uni-app接入一键登录功能
一键登录功能官方文档
官方文档地址:https://uniapp.dcloud.net.cn/univerify.html
使用一键登录功能条件
- 开通uni一键登录服务,开通后添加需要申请开通一键登录功能的应用。
开通一键登录服务文档地址:https://doc.dcloud.net.cn/uniCloud/uni-login/service.html


Android使用自有证书:如果你使用了自有证书,需要在 我的应用-> 选择你的应用 -> 各平台信息,找到你的Android端应用配置相应签名参数,否则在创建一键登录应用的时候签名参数是没有的。

如果你使用
keytool -list -v -keystore {your_app}.keystore打印参数发现你的md5参数没有,请参考这个获取md5签名参数:https://ask.dcloud.net.cn/article/38778
我用的是里面大佬分享的不降级的方式,这种方式需要先安装openssl
- 开通uniCloud服务
一键登录功能需要用到云空服务空间和云函数所以必须开通服务空间,你一键登录创建的原函数上传后也会存在这里面。

- 配置manifest.json ,需要在App模块配置勾选上OAuth(登录鉴权)和一键登录(univerify)

创建云uniCloud云开发环境
上面的步骤都配置好了,接下来就可以回到编辑器创建云开发环境了, 右击你的项目文件夹 -> 选择创建uniCloud云开发环境 -> 选择你的云服务空间类型(阿里云、腾讯云、支付宝小程序云)。创建好之后,右击生成的uniCloud文件夹关联你的服务空间。

创建云函数
右击cloudfunctions文件夹选择新建云函数/云对象选项去创建你的云函数。创建完并添加完代码后,右击你创建的云函数文件夹上传部署你的云函数。



云函数代码
'use strict';
exports.main = async (event, context) => {
// event里包含着客户端提交的参数
const res = await uniCloud.getPhoneNumber({
appid: '__UNI__xxxxxx', // 替换成自己开通一键登录的应用的DCloud appid,使用callFunction方式调用时可以不传(会自动取当前客户端的appid),如果使用云函数URL化的方式访问必须传此参数
provider: 'univerify',
apiKey: 'xxxxxxxxxxxxxxxx', // 在开发者中心开通服务并获取apiKey
apiSecret: 'xxxxxxxxxxxxxx', // 在开发者中心开通服务并获取apiSecret
access_token: event.access_token,
openid: event.openid
})
console.log('res>>>>>>>>>>>>>>>',res); // res里包含手机号
// 执行用户信息入库等操作,正常情况下不要把完整手机号返回给前端
// 如果数据库在uniCloud上,可以直接入库
// 如果数据库不在uniCloud上,可以通过 uniCloud.httpclient API,将手机号通过http方式传递给其他服务器的接口,详见:https://un

本文详细介绍了如何在uni-app中实现一键登录功能,包括开通uni登录服务、配置Android证书、设置manifest.json和云函数,以及在项目中实际应用预登录和手机号登录的过程。

7149

被折叠的 条评论
为什么被折叠?



