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 是正确的,并且服务器能够正常访问。
  • 请求方法:确认你使用的请求方法(如 GETPOST)是否符合服务器的要求。
  • 请求头:检查请求头是否正确设置,特别是 Content-TypeAuthorization 等关键字段。
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.logdebugger 语句,逐步调试代码,找出问题所在。

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);
    }
});
回到顶部