uni-app 一键登录无法返回数据

uni-app 一键登录无法返回数据

产品分类:

uniapp/App

PC开发环境操作系统:

Windows

PC开发环境操作系统版本号:

win10

HBuilderX类型:

正式

HBuilderX版本号:

4.11

手机系统:

Android

手机系统版本号:

Android 10

手机厂商:

vivo

手机机型:

iq00z5x

页面类型:

vue

vue版本:

vue2

打包方式:

云端

项目创建方式:

HBuilderX

示例代码:

云函数 
let res8 = await uniCloud.getPhoneNumber({
provider: 'univerify',
appid: context.APPID,
access_token: data.access_token,
openid: data.openid,
})
// let res5 = await dbJQL.collection('user').where(`用户名 == 'admin'`).update({
//  联系方式: res8.data.phoneNumber
// })
result = {
data: res8,
msg: '查询成功',
code: 0
}

客户端  
uniCloud.callFunction({
name: 'query',
data: {
type:'test',
access_token: res.authResult.access_token, // 客户端一键登录接口返回的access_token
openid: res.authResult.openid ,// 客户端一键登录接口返回的openid
}
}).then((res) => {  
console.log(res)  
})  
},  

操作步骤:

按照文档写的代码

预期结果:

正常返回数据

实际结果:

控制台报错

bug描述:

一键登录无法返回数据

示例图片1 示例图片2


更多关于uni-app 一键登录无法返回数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

提供下云函数名称 也可以前往自己的云服务空间 查看对应的云函数日志

更多关于uni-app 一键登录无法返回数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html


云函数名称是query这个

请求入参: { “args”: { “type”: “test”, “access_token”: “000gtc_7a0768041830a51b2ab675f7966ed2ca61”, “openid”: “U1RzaWQwMDAwMDAxNzEyNzI2NTMwMjM0aFJHVFU2dGNJNzYwQ3l3d1FEcWM0dTJTYXJlTVpld2V8fDF8djJ8MXw2YjI2ZTAxZTVhZTY0YWU1NWQ1ZGZlNTk2YTY3YTJkYg==”, “clientInfo”: { “PLATFORM”: “web”, “OS”: “android”, “APPID”: “UNIEDA8AA1”, “DEVICEID”: “16950896828006113967”, “scene”: 1001, “appId”: “UNIEDA8AA1”, “appLanguage”: “zh-Hans”, “appName”: “进销存管理系统”, “appVersion”: “1.0.2”, “appVersionCode”: “100”, “browserName”: “edge”, “browserVersion”: “123.0.0.0”, “deviceId”: “16950896828006113967”, “deviceModel”: “Nexus 5”, “deviceOrientation”: “portrait”, “devicePixelRatio”: 2, “deviceType”: “phone”, “hostLanguage”: “zh-CN”, “hostName”: “edge”, “hostTheme”: “light”, “hostVersion”: “123.0.0.0”, “osName”: “android”, “osVersion”: “6.0”, “safeArea”: { “left”: 0, “right”: 400, “top”: 0, “bottom”: 873, “width”: 400, “height”: 873 }, “safeAreaInsets”: { “top”: 0, “right”: 0, “bottom”: 0, “left”: 0 }, “screenHeight”: 873, “screenWidth”: 400, “statusBarHeight”: 0, “ua”: “Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Mobile Safari/537.36 Edg/123.0.0.0”, “uniCompileVersion”: “4.08”, “uniPlatform”: “web”, “uniRuntimeVersion”: “4.08”, “windowBottom”: 50, “windowHeight”: 823, “windowTop”: 0, “windowWidth”: 400, “locale”: “zh-Hans”, “LOCALE”: “zh-Hans” } }, “requestId”: “ac1cd3741712726623475190385” } [query/ac1cd3741712726623475190385/436ms/ERROR] Cannot read property ‘mobile’ of undefined TypeError: Cannot read property ‘mobile’ of undefined at Object.C [as univerify] (/tmp/function/@common_modules/uni-cloud-verify/index.js:1:5295) at <anonymous> at process._tickCallback (internal/process/next_tick.js:189:7) 请求响应状态: fail

上面这个是日志

获取手机号失败的问题 麻烦进企业微信群 https://uniapp.dcloud.net.cn/univerify.html#question 提供openid

在使用 uni-app 进行一键登录时,如果无法返回数据,可能是由于多种原因导致的。以下是一些常见的问题和解决方法:

1. 检查配置

  • AppKey 和 AppSecret:确保你的一键登录服务(如阿里云、腾讯云等)的 AppKey 和 AppSecret 配置正确。
  • 包名和签名:确保你在服务端配置的包名和签名与你的应用一致。

2. 权限问题

  • 网络权限:确保在 manifest.json 中配置了网络权限:
    {
      "permission": {
        "scope.userLocation": {
          "desc": "你的位置信息将用于获取当前城市信息"
        },
        "scope.record": {
          "desc": "你的录音将用于语音识别"
        }
      }
    }
    
  • 其他权限:根据你的一键登录服务的要求,可能需要配置其他权限,如读取手机状态等。

3. 代码逻辑

  • 调用时机:确保你在正确的生命周期或事件中调用一键登录的 API。例如,可以在 onLoad 或按钮点击事件中调用。
  • 回调函数:确保你正确实现了回调函数,并且在回调函数中处理了返回的数据。
    uni.login({
      provider: 'univerify',
      success: (res) => {
        console.log('登录成功', res);
        // 处理返回的数据
      },
      fail: (err) => {
        console.log('登录失败', err);
      }
    });
    

4. 调试信息

  • 控制台日志:查看控制台日志,检查是否有任何错误信息。如果有错误信息,根据错误信息进行排查。
  • 网络请求:使用浏览器的开发者工具或 Charles 等抓包工具,检查网络请求是否正常发送和接收。

5. 服务端问题

  • 服务端接口:确保服务端接口正常工作,并且返回的数据格式符合预期。
  • Token 验证:如果涉及到 Token 验证,确保 Token 的生成和验证逻辑正确。

6. 平台差异

  • 平台差异:uni-app 支持多平台,不同平台的实现可能有所不同。确保你的一键登录逻辑在目标平台上正常工作。

7. 第三方 SDK

  • SDK 版本:确保你使用的第三方 SDK 版本是最新的,并且与 uni-app 版本兼容。
  • SDK 配置:根据 SDK 的文档,确保正确配置了 SDK。

8. 联系技术支持

  • 如果以上方法都无法解决问题,建议联系一键登录服务的技术支持,提供详细的错误信息和日志,以便他们帮助你排查问题。

示例代码

以下是一个简单的 uni-app 一键登录示例代码:

uni.login({
  provider: 'univerify',
  success: (res) => {
    console.log('登录成功', res);
    // 处理返回的数据
    uni.request({
      url: 'https://your-server.com/verify-login',
      method: 'POST',
      data: {
        code: res.code
      },
      success: (response) => {
        console.log('验证成功', response.data);
      },
      fail: (error) => {
        console.log('验证失败', error);
      }
    });
  },
  fail: (err) => {
    console.log('登录失败', err);
  }
});
回到顶部