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描述:
一键登录无法返回数据

更多关于uni-app 一键登录无法返回数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
提供下云函数名称 也可以前往自己的云服务空间 查看对应的云函数日志
更多关于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);
}
});

