O默化O
O默化O
  • 发布:2021-06-23 10:48
  • 更新:2021-11-29 11:34
  • 阅读:585

一键登录 1001

分类:uniCloud

java 开发调用云函数 传输了accessToken 和openId
返回错误
{"success":false,"error":{"code":""FunctionBizError"","message":""1001:errCode: 1001 | errMsg: getPhoneNumber参数access_token值不可为空""},"data":null}

然后使用开放平台中→函数列表→云函数URL化→跳转路径(GET方式 放入的access_token 依然是这个错误 )
请大神帮忙解答一下

2021-06-23 10:48 负责人:DCloud_UNI_LXH 分享
已邀请:
2***@qq.com

2***@qq.com

同样 遇到这个问题。

DCloud_UNI_LXH

DCloud_UNI_LXH

具体是怎么使用的,贴一下。从报错上看,应该是云函数没有收到access_token 这个值,你也可以从云函数请求那里查看参数是否已经发送过来。

  • 2***@qq.com

    请求入参: {

    "args": {

    "path": "/",

    "httpMethod": "GET",

    "headers": {

    "x-real-ip": "36.7.145.36",

    "accept-language": "zh-cn",

    "host": "dbc146dc-dfcf-4547-b147-1073fd74b7be.bspapp.com",

    "x-forwarded-by": "172.20.8.24:80",

    "x-forwarded-for": "36.7.145.36, 100.117.86.93",

    "accept-encoding": "gzip, deflate, br",

    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8",

    "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15"

    },

    "queryStringParameters": {

    "access_token": "U1RzaWQwMDAwMDAxNjM3ODg5OTk3Mzk5d21sSktCdERycGF2T1p3MDVTdmUyUDhEcFhoalNIWnh8fDF8djJ8MQ==",

    "openid": "02085FFA536D7CFA96F2E5D94DA649786137cf3464306ff456f850678a9242d9d6b62",

    "sign": "94447df3bf43b749567ada94f19a48a7748b76cef99db21cf41f6fb986a6d5e0"

    },

    "isBase64Encoded": false,

    "body": ""

    },

    "requestId": "ac1408181637892962092123605"

    }

    [getPhoneNum/ac1408181637892962092123605/14ms/ERROR] errCode: 1001 | errMsg: getPhoneNumber参数access_token值不可为空


    2021-11-29 09:31

DCloud_UNI_LXH

DCloud_UNI_LXH

看着是传过来了。你拿到了吗?传给 getPhoneNumber 这个函数了吗?打印下日志就知道了

  • 2***@qq.com

    getPhoneNumber 是官方提供的云函数,const crypto = require('crypto')

    exports.main = async function (event){


    const secret = 'your-secret-string' // 自己的密钥不要直接使用示例值,且注意不要泄露

    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: 'xxx', // DCloud appid

    apiKey: 'xxx', // 在开发者中心开通服务并获取apiKey

    apiSecret: 'xxx', // 在开发者中心开通服务并获取apiSecret

    access_token: access_token,

    openid: openid

    })

    // 返回手机号给自己服务器

    return res

    }


    2021-11-29 11:58

  • DCloud_UNI_LXH

    回复 2***@qq.com: 你在调用 uniCloud.getPhoneNumber 前打印一下 access_token 参数看看


    2021-11-29 12:02

  • 2***@qq.com

    const {


    access_token,


    openid


    } = params 这一块写的是不是有问题?


    2021-11-29 12:03

  • DCloud_UNI_LXH

    回复 2***@qq.com: 你之前获取了 let params = event.queryStringParameters ,看着好像没问题,不过还是要打印下看看


    2021-11-29 12:06

  • 2***@qq.com

    回复 DCloud_UNI_LXH: 我解决了


    2021-11-29 14:51

  • DCloud_UNI_LXH

    回复 DCloud_UNI_LXH: 是什么原因呢?


    2021-11-29 15:02

  • 描喵妙

    回复 2***@qq.com: 您好,我也遇到了,请问你是怎么解决的


    2021-12-28 18:27

该问题目前已经被锁定, 无法添加新回复