uni-app一键登录手机真机调试报错 获取手机号失败 请稍后重试
uni-app一键登录手机真机调试报错 获取手机号失败 请稍后重试
问题描述
HBuilder版本4.44,参考 云函数文档 编写云函数后,使用标准基座进行真机调试时(连接本地云函数),出现报错。【连接手机进行的调试,而且电脑端使用的是手机热点】
'use strict';
exports.main = async (event, context) => {
const res = await uniCloud.getPhoneNumber({
appid: 'xxx', // 已将这一块替换成一键登录中添加的应用ID
provider: 'univerify',
access_token: event.access_token,
openid: event.openid
})
console.log(res); // res里包含手机号
return {
code: 0,
message: '获取手机号成功'
}
}
Error: 获取手机号失败,请稍后重试。
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async global.__tempModuleExports.exports.main
官网上有说明:应用开通uni一键登录服务后,需要等审核通过后才能正式使用。在审核期间可以使用HBuilder标准基座真机运行调用一键登录功能,调用时会从你的账户中扣费。
我的应用目前在审核中,也进行了一键登录充值。
开发环境与项目信息
项目创建方式 | HBuilder标准基座 |
---|---|
HBuilder版本 | 4.44 |
云函数文档 | uniApp云函数文档 |
更多关于uni-app一键登录手机真机调试报错 获取手机号失败 请稍后重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app一键登录手机真机调试报错 获取手机号失败 请稍后重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html
针对您提到的uni-app一键登录功能在手机真机调试时遇到“获取手机号失败,请稍后重试”的问题,这通常涉及到多个方面的排查,包括但不限于网络请求、权限配置、服务提供商接口状态等。以下是一个简化的排查思路和代码示例,希望能帮助您定位问题。
1. 检查网络请求与权限
首先确保应用已正确配置了网络权限和必要的服务权限。在manifest.json
中,确保已添加相关权限配置:
"mp-weixin": { // 以微信小程序为例,其他平台类似
"requiredPrivateInfos": ["getPhoneNumber"]
},
"app-plus": {
"distribute": {
"android": {
"permissions": [
"android.permission.INTERNET",
// 其他可能需要的权限
]
},
"ios": {
"NSAppTransportSecurity": {
"NSAllowsArbitraryLoads": true
}
}
}
}
2. 一键登录按钮绑定事件
在前端页面中,确保一键登录按钮绑定了正确的事件处理函数,并正确调用了服务商提供的接口。以下是一个假设的示例,使用微信小程序的一键登录接口:
<template>
<view>
<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">一键登录</button>
</view>
</template>
<script>
export default {
methods: {
getPhoneNumber(e) {
if (e.detail.errMsg === "getPhoneNumber:ok") {
const encryptedData = e.detail.encryptedData;
const iv = e.detail.iv;
// 发送encryptedData和iv到服务器进行解密,获取手机号
uni.request({
url: 'https://yourserver.com/decryptPhone',
method: 'POST',
data: { encryptedData, iv },
success: (res) => {
if (res.data.success) {
console.log('手机号:', res.data.phoneNumber);
} else {
console.error('获取手机号失败:', res.data.message);
}
},
fail: () => {
console.error('请求失败');
}
});
} else {
console.error('用户拒绝授权');
}
}
}
}
</script>
3. 服务器端解密逻辑
确保服务器端能够正确解密从前端获取的encryptedData
和iv
。解密逻辑依赖于您使用的一键登录服务提供商的SDK或API。
总结
以上代码示例提供了一个基础的框架,用于排查和处理一键登录功能中的手机号获取失败问题。重点在于检查权限配置、网络请求的正确性以及服务器端的解密逻辑。如果问题依旧存在,建议查看服务提供商的文档或联系其技术支持获取更具体的帮助。