uni-app 一键登录手机真机调试时云函数报错 获取手机号失败,请稍后重试
uni-app 一键登录手机真机调试时云函数报错 获取手机号失败,请稍后重试
产品分类
uniCloud/腾讯云
示例代码
云函数代码:
'use strict';
exports.main = async (event, context) => {
const res = await uniCloud.getPhoneNumber({
appid: 'xxx', // 已将这一块替换成一键登录中添加的应用ID
provider: 'univerify',
access_token: event.access_token,
openid: event.openid
})
console.log(res); // res里包含手机号
return {
code: 0,
message: '获取手机号成功'
}
}
操作步骤
使用 uniCloud.callFunction
调用上述的云函数代码,就会出现报错。
预期结果
能返回成功。
实际结果
Error: 获取手机号失败,请稍后重试。
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async global.__tempModuleExports.exports.main
bug描述
HBuilder版本4.44,参考 uniApp文档 编写云函数后,使用标准基座进行真机调试时(连接本地云函数),出现报错:Error: 获取手机号失败,请稍后重试。
【连接华为手机(HarmonyOS 4.2.0)进行的调试,而且电脑端使用的是手机热点】
官网上有说明:应用开通uni一键登录服务后,需要等审核通过后才能正式使用。在审核期间可以使用HBuilder标准基座真机运行调用一键登录功能,调用时会从你的账户中扣费。
我的应用目前在审核中,也进行了一键登录充值。
开发环境
项目创建方式 | HBuilder标准基座 |
---|---|
版本号 | 4.44 |
更多关于uni-app 一键登录手机真机调试时云函数报错 获取手机号失败,请稍后重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html
请加企业微信群 加群方式见“常见问题”下方
更多关于uni-app 一键登录手机真机调试时云函数报错 获取手机号失败,请稍后重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html
针对您提到的uni-app在真机调试时云函数报错,获取手机号失败的问题,这通常与后端云函数的配置、权限设置以及前端调用方式有关。以下是一个基于uni-app和云开发(如阿里云、腾讯云等)的示例代码和配置检查步骤,以帮助您定位和解决问题。由于具体云服务商的API和配置方式可能有所不同,以下示例以腾讯云为例进行说明。
1. 检查云函数配置
确保您的云函数已正确配置并部署到云端。在云函数的index.js
中,您应该有一个处理登录请求的函数,例如:
const cloud = require('wx-server-sdk');
cloud.init();
exports.main = async (event, context) => {
try {
const wxContext = cloud.getWXContext();
const phoneNumber = wxContext.OPENID; // 注意:这里OPENID是示例,实际应使用云开发提供的获取手机号API
// 假设您使用腾讯云的云开发API获取手机号
const res = await cloud.openapi.security.decryptPhoneNumber({
encryptedData: event.encryptedData,
iv: event.iv,
sessionKey: wxContext.SESSION_KEY, // 确保已正确获取sessionKey
});
return {
success: true,
phoneNumber: res.phoneNumber,
};
} catch (error) {
console.error(error);
return {
success: false,
message: '获取手机号失败,请稍后重试',
};
}
};
2. 前端调用云函数
在您的uni-app前端代码中,确保您正确调用了云函数,并传递了必要的参数(如加密数据、会话密钥等):
uni.cloud.callFunction({
name: 'yourCloudFunctionName', // 替换为您的云函数名称
data: {
encryptedData: this.encryptedData, // 从登录按钮事件中获取
iv: this.iv, // 从登录按钮事件中获取
},
success: (res) => {
if (res.result.success) {
console.log('手机号:', res.result.phoneNumber);
} else {
uni.showToast({
title: res.result.message,
icon: 'none',
});
}
},
fail: (err) => {
console.error('调用云函数失败:', err);
},
});
3. 检查权限和配置
- 确保您的云函数有权限访问相关的云开发资源。
- 检查云函数的网络配置,确保没有防火墙或安全组规则阻止请求。
- 确保前端应用的登录状态正确,能够获取到有效的sessionKey。
通过上述步骤和代码示例,您应该能够定位并解决问题。如果问题仍然存在,建议查看云服务商的官方文档或联系其技术支持获取更详细的帮助。