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)
  }
})
回到顶部