uni-app 一键登录自有服务器调用报错
uni-app 一键登录自有服务器调用报错
操作步骤:
// 云函数验证签名,此示例中以接受GET请求为例作演示
const crypto = require('crypto')
exports.main = async function (event){
const secret = '123' // 自己的密钥不要直接使用示例值,且注意不要泄露
const hmac = crypto.createHmac('sha256', secret);
let params = event.queryStringParameters
const sign = params.sign
delete params.sign
const signStr = Object.keys(params).sort().map(key => {
return `${key}=${params[key]}`
}).join('&')
hmac.update(signStr);
if(sign!==hmac.digest('hex')){
throw new Error('非法访问')
}
const {
access_token,
openid
} = params
const res = await uniCloud.getPhoneNumber({
provider: 'univerify',
appid: 'UNI_B74A359', // DCloud appid
access_token: access_token,
openid: openid
})
// 返回手机号给自己服务器
return res
}
预期结果:
正常返回手机号
### 实际结果:
有时能返回成功,有时报错没有apiKey
bug描述:
通过自有服务器调用一键登录的云函数,报错没有apiKey,有时又能正常调用拿到用户号码(一键登录功能我看开发后台是已经不提供apiKey了)。
更多关于uni-app 一键登录自有服务器调用报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 一键登录自有服务器调用报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在使用 Uni-App 进行一键登录时,如果调用自有服务器时出现报错,可能是由于多种原因引起的。以下是一些常见的排查步骤和解决方案:
1. 检查网络请求配置
- URL 是否正确:确保你调用的服务器 URL 是正确的,并且服务器能够正常访问。
- 请求方法:确认你使用的请求方法(如
GET
、POST
)是否符合服务器的要求。 - 请求头:检查请求头是否正确设置,特别是
Content-Type
、Authorization
等关键字段。
uni.request({
url: 'https://your-server.com/api/login',
method: 'POST',
header: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your-token'
},
data: {
phone: '1234567890',
code: '123456'
},
success: (res) => {
console.log(res.data);
},
fail: (err) => {
console.error(err);
}
});
2. 检查服务器端代码
- 接口是否正常:确保服务器端的接口能够正常处理请求,并且返回正确的响应。
- 跨域问题:如果前端和后端不在同一个域名下,可能会遇到跨域问题。确保服务器端已经配置了正确的 CORS 策略。
// 例如在 Express 中配置 CORS
const cors = require('cors');
app.use(cors());
3. 检查请求参数
- 参数是否正确:确保你传递给服务器的参数是正确的,并且符合服务器端的要求。
- 参数格式:检查参数格式是否正确,例如 JSON 格式、表单格式等。
4. 查看错误信息
- 控制台错误:查看浏览器的开发者工具或 Uni-App 的控制台,查看具体的错误信息。
- 服务器日志:查看服务器端的日志,了解服务器在处理请求时是否出现了错误。
5. 调试工具
- 使用 Postman 测试:使用 Postman 等工具直接测试服务器接口,确保接口能够正常工作。
- 调试代码:在 Uni-App 中使用
console.log
或debugger
语句,逐步调试代码,找出问题所在。
6. 检查 Uni-App 版本
- 版本兼容性:确保你使用的 Uni-App 版本与服务器端的接口兼容。如果使用的是较新的 Uni-App 版本,可能需要检查是否有 API 变更。
7. SSL/TLS 问题
- HTTPS 请求:如果服务器使用的是 HTTPS,确保你的请求也是通过 HTTPS 发起的。某些情况下,自签名证书可能会导致请求失败。
8. 服务器防火墙或安全组
- 防火墙设置:检查服务器的防火墙或安全组设置,确保允许来自客户端的请求。
9. 错误处理
- 捕获异常:在 Uni-App 中捕获并处理异常,避免程序崩溃。
uni.request({
url: 'https://your-server.com/api/login',
method: 'POST',
data: {
phone: '1234567890',
code: '123456'
},
success: (res) => {
console.log(res.data);
},
fail: (err) => {
console.error('请求失败:', err);
}
});