uni-app 一键登录获取不到手机号码5000报错

发布于 1周前 作者 bupafengyu 来自 Uni-App

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:获取手机号失败,请稍后重试。"
  }
}

8 回复

收到 我们看下


您好 确认下 是不是有缓存预取号结果(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 的 AppKeyAppSecret。这些信息通常由第三方登录服务提供商(如阿里云、腾讯云等)提供。
  • 包名和签名:确保你在第三方服务平台上配置的包名和签名与你的 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);
      }
    });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!