uni-app 一键登录获取不到手机号码5000报错
uni-app 一键登录获取不到手机号码5000报错
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 13.5.2 (22G91) | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
HBuilderX版本号:3.99
手机系统:iOS
手机系统版本号:iOS 17
手机厂商:苹果
手机机型:iPhone12
页面类型:vue
vue版本:vue2
打包方式:云端
示例代码:
{
"args": {
"path": "/",
"httpMethod": "GET",
"headers": {
"x-real-ip": "47.101.142.54",
"host": "api.doudouyoutang.com",
"x-forwarded-by": "172.28.195.6:8000",
"x-forwarded-for": "172.28.211.99, 100.122.16.174",
"accept": "*/*"
},
"queryStringParameters": {
"openid": "024B1B4141A-2BC5-40AA-8407-77965B5DA5F9gtc_64405c5dc50320284d4d04b1cbc2bf9e65",
"access_token": "ODQ1MDRlYTAwNDY1YzhjZDRlNjYwODk0Yjc0ZTJlYjBhMjkyYzRlYWFjMDBhMTc0NjA0NTA2MjY3OTAxMTM5Nnx8NXx2Mnw1fGVmZDQ4ZTE1ODA5MWY1YWFlNjFlYTUxOGU3ZDBkYTgw",
"appid": "UNID135FD6"
},
"isBase64Encoded": false,
"body": ""
},
"requestId": "ac1cc3061705239512164157155"
}
[oneClickLoginCommon/ac1cc3061705239512164157155/13ms/DEBUG] event : {
path: '/',
httpMethod: 'GET',
headers: {
'x-real-ip': '47.101.142.54',
host: 'api.doudouyoutang.com',
'x-forwarded-by': '172.28.195.6:8000',
'x-forwarded-for': '172.28.211.99, 100.122.16.174',
accept: '*/'
},
queryStringParameters: {
openid: '024B1B4141A-2BC5-40AA-8407-77965B5DA5F9gtc_64405c5dc50320284d4d04b1cbc2bf9e65',
access_token: 'ODQ1MDRlYTAwNDY1YzhjZDRlNjYwODk0Yjc0ZTJlYjBhMjkyYzRlYWFjMDBhMTc0NjA0NTA2MjY3OTAxMTM5Nnx8NXx2Mnw1fGVmZDQ4ZTE1ODA5MWY1YWFlNjFlYTUxOGU3ZDBkYTgw',
appid: 'UNID135FD6'
},
isBase64Encoded: false,
body: ''
}
[oneClickLoginCommon/ac1cc3061705239512164157155/689ms/ERROR] 获取手机号失败,请稍后重试。
Error: 获取手机号失败,请稍后重试。
at w (/tmp/function/@common_modules/uni-cloud-verify/index.js:1:4474)
at Object.C [as univerify] (/tmp/function/@common_modules/uni-cloud-verify/index.js:1:5360)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
请求响应状态: fail
操作步骤:
客户端通过一键登录,获取到了openid/token,发送到服务端,服务端调用的云函数,结果就是获取不到手机号码。
预期结果:
能正常获取到手机号码。
实际结果:
获取不到
{
"success": false,
"error": {
"code": "FunctionBizError",
"message": "5000:获取手机号失败,请稍后重试。"
}
}
收到 我们看下
您好 确认下 是不是有缓存预取号结果(openid/token),这边查询记录发现2024-01-13的预取号结果,14,15号都还在用
麻烦问下,缓存预取号结果:指的是取了openid/token,缓存起来,一直使用是这意思吗?
我看了代码,没有做缓存,都是现取现用的,我刚又取了两次 openid: 024B1B4141A-2BC5-40AA-8407-77965B5DA5F9gtc_64405c5dc50320284d4d04b1cbc2bf9e65 token:ODQ1MDRlYTAwNDY1YzhjZDRlNjYwODk0Yjc0ZTJlYjBhMjkyYzRlYWFjMDBhMTc0NjA0NTA2MjY3OTAxMTM5Nnx8NXx2Mnw1fDMzNzU5OGYxMDVkZGUxZTRmODExODg5MzA5ZDJlNzgw
openid: 024B1B4141A-2BC5-40AA-8407-77965B5DA5F9gtc_64405c5dc50320284d4d04b1cbc2bf9e65 token: ODQ1MDRlYTAwNDY1YzhjZDRlNjYwODk0Yjc0ZTJlYjBhMjkyYzRlYWFjMDBhMTc0NjA0NTA2MjY3OTAxMTM5Nnx8NXx2Mnw1fGUxYWNhYjc5MzdlNjU4NWI5ZWZjOWZiMDRkMWRjMGNk
都还是不行的 我是通过客户端的方法取了openid/token,发送到服务端,然后再通过云函数URL去调用云函数的方式,之前都是好的,这块代码也没动,好好的就不行的,我现在热更新wgt后,安卓线上还是正常的,但是IOS线上就获取不到手机号了
回复 开心人:您好,可以加微信企业群 加群方式可见开发文档 https://uniapp.dcloud.net.cn/univerify.html#question “常见问题”下方
在使用 UniApp 进行一键登录时,如果遇到获取不到手机号码并出现 5000
报错,通常是由于以下几个原因导致的。以下是一些可能的解决方案:
1. 检查 SDK 配置
- AppKey 和 AppSecret:确保你在 UniApp 项目中正确配置了一键登录 SDK 的
AppKey
和AppSecret
。这些信息通常由第三方登录服务提供商(如阿里云、腾讯云等)提供。 - 包名和签名:确保你在第三方服务平台上配置的包名和签名与你的 UniApp 项目一致。如果不一致,可能会导致认证失败。
2. 网络问题
- 网络连接:确保设备网络连接正常,一键登录需要通过网络与第三方服务器进行通信。
- 服务器状态:检查第三方登录服务的服务器状态,确保服务正常运行。
3. 权限问题
- 权限配置:在
manifest.json
文件中,确保你已经正确配置了必要的权限,例如网络权限、读取手机状态权限等。 - 用户授权:确保用户已经授权应用获取手机号码。如果用户拒绝了授权,可能会导致获取不到手机号码。
4. 代码问题
-
调用方法:检查你在 UniApp 中调用一键登录的代码是否正确。以下是一个示例代码:
uni.login({ provider: 'univerify', success: function (res) { console.log('登录成功', res); // 获取手机号码 uni.getPhoneNumber({ success: function (phoneRes) { console.log('获取手机号码成功', phoneRes); }, fail: function (err) { console.log('获取手机号码失败', err); } }); }, fail: function (err) { console.log('登录失败', err); } });