uni-app 一键登录云函数获取手机号失败 请稍后重试
uni-app 一键登录云函数获取手机号失败 请稍后重试
| 信息类别 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win10专业版19045.3803 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.99 |
| 手机系统 | iOS |
| 手机系统版本号 | iOS 17 |
| 手机厂商 | 苹果 |
| 手机机型 | iPhone 12 Pro Max |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
操作步骤:
同一个手机在刚下载的时候可以正常登录,但是稍微隔一段时间后就无法登录并且提示获取手机号失败,请稍后重试。
预期结果:
请求响应状态: success
实际结果:
[getPhoneNumber/ac1cd36d1705545789399196797/331ms/ERROR] 获取手机号码失败:获取手机号失败,请稍后重试。
Error: 获取手机号码失败:获取手机号失败,请稍后重试。
at Object.er [as univerify] (/tmp/function/@dcloudio/serverless/lib/aliyun/uni-cloud.js:1:45183)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
请求响应状态: fail
bug描述:
同一个手机在刚下载的时候可以正常登录,但是稍微隔一段时间后就无法登录并且提示获取手机号失败,请稍后重试。
请求入参:
{
"args": {
"access_token": "ZmRjYzczZTM4YzNiNGNiYTBmMWQxNTFhMmUzNDFkMzg2NmY0NDJhZTcxNDBhMTc0NzgwMjgxMzUwMzAyNTE4M3x8NXx2Mnw1fDY1MTRiZmMyMTcyNjYyNGI2MWVkNDRhMGFhMzA0YWVh",
"openid": "0247D983894-3A8C-4218-A61F-86B5FE971FBAgtc_6409bd5094dfac4193863098b702389f66",
"clientInfo": {
"PLATFORM": "app",
"OS": "ios",
"APPID": "UNI7D36B00",
"DEVICEID": "E3F0EF35ACF9E37DB7393DCBA347DC8C",
"channel": "",
"scene": 1001,
"appId": "UNI7D36B00",
"appLanguage": "zh-Hans",
"appName": "八爪畅学",
"appVersion": "1.0.6",
"appVersionCode": "130",
"appWgtVersion": "1.0.6",
"browserName": "wkwebview",
"browserVersion": "17.2.1",
"deviceBrand": "apple",
"deviceId": "E3F0EF35ACF9E37DB7393DCBA347DC8C",
"deviceModel": "iPhone 12 Pro Max",
"deviceOrientation": "portrait",
"devicePixelRatio": 3,
"deviceType": "phone",
"errMsg": "getSystemInfoSync:ok",
"osLanguage": "zh-Hans-CN",
"osName": "ios",
"osTheme": "light",
"osVersion": "17.2.1",
"safeArea": {
"left": 0,
"right": 428,
"top": 47,
"bottom": 892,
"width": 428,
"height": 845
},
"safeAreaInsets": {
"top": 47,
"right": 0,
"bottom": 34,
"left": 0
},
"screenHeight": 926,
"screenWidth": 428,
"statusBarHeight": 47,
"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Html5Plus/1.0 (Immersed/47) uni-app",
"uniCompileVersion": "3.99",
"uniPlatform": "app",
"uniRuntimeVersion": "3.99",
"windowBottom": 0,
"windowHeight": 926,
"windowTop": 0,
"windowWidth": 428,
"locale": "zh-Hans",
"LOCALE": "zh-Hans"
}
},
"requestId": "ac1cd36d1705545789399196797"
}
[getPhoneNumber/ac1cd36d1705545789399196797/331ms/ERROR] 获取手机号码失败:获取手机号失败,请稍后重试。
Error: 获取手机号码失败:获取手机号失败,请稍后重试。
at Object.er [as univerify] (/tmp/function/@dcloudio/serverless/lib/aliyun/uni-cloud.js:1:45183)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
请求响应状态: fail
更多关于uni-app 一键登录云函数获取手机号失败 请稍后重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
您好,这个问题个推已经在安排修复,麻烦先进群关注修复进度。
加群方式可见开发文档 https://uniapp.dcloud.net.cn/univerify.html#question “常见问题”下方
更多关于uni-app 一键登录云函数获取手机号失败 请稍后重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在使用 uni-app 进行一键登录时,如果云函数获取手机号失败,并提示“请稍后重试”,可能是由于多种原因导致的。以下是一些可能的原因及解决方法:
1. 网络问题
- 原因: 网络不稳定或请求超时可能导致获取手机号失败。
- 解决方法: 检查网络连接是否正常,确保设备能够正常访问互联网。可以尝试切换网络环境(如从Wi-Fi切换到移动数据)后重试。
2. 云函数配置问题
- 原因: 云函数的配置可能不正确,例如未正确配置一键登录的SDK或未正确设置相关参数。
- 解决方法: 检查云函数的配置,确保已正确集成一键登录的SDK,并且相关参数(如AppID、AppSecret等)已正确设置。
3. 权限问题
- 原因: 云函数可能没有获取手机号的权限,或者用户未授权获取手机号。
- 解决方法: 确保云函数有获取手机号的权限,并且在用户授权时,用户已同意获取手机号。可以在调用云函数前,先检查用户是否已授权。
4. 服务端问题
- 原因: 一键登录的服务端可能出现问题,导致无法正常获取手机号。
- 解决方法: 检查一键登录服务端的状态,确保服务端正常运行。可以联系服务提供商,确认是否存在服务端问题。
5. SDK版本问题
- 原因: 使用的SDK版本可能过旧或存在bug,导致无法正常获取手机号。
- 解决方法: 检查并更新SDK到最新版本,确保使用的是稳定且兼容的版本。
6. 日志排查
- 原因: 云函数可能未正确记录日志,导致无法定位问题。
- 解决方法: 在云函数中添加详细的日志记录,查看日志中是否有错误信息或异常情况,以便进一步排查问题。
7. 重试机制
- 原因: 由于网络波动或服务端临时问题,可能导致一次性请求失败。
- 解决方法: 在代码中添加重试机制,当获取手机号失败时,自动重试几次,避免因临时问题导致失败。
8. 联系技术支持
- 原因: 如果以上方法都无法解决问题,可能是更深层次的问题。
- 解决方法: 联系一键登录服务提供商的技术支持,提供详细的错误信息和日志,寻求进一步的帮助。
示例代码(云函数部分)
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
try {
const res = await cloud.getPhoneNumber({
code: event.code // 从客户端获取的code
})
return {
code: 0,
data: res.phoneNumber
}
} catch (err) {
console.error('获取手机号失败:', err)
return {
code: -1,
message: '获取手机号失败,请稍后重试'
}
}
}
客户端调用示例
uni.login({
provider: 'univerify',
success: (loginRes) => {
uniCloud.callFunction({
name: 'getPhoneNumber',
data: {
code: loginRes.code
},
success: (res) => {
if (res.result.code === 0) {
console.log('获取手机号成功:', res.result.data)
} else {
console.error('获取手机号失败:', res.result.message)
}
},
fail: (err) => {
console.error('调用云函数失败:', err)
}
})
},
fail: (err) => {
console.error('登录失败:', err)
}
})

