java 开发调用云函数 传输了accessToken 和openId
返回错误
{"success":false,"error":{"code":""FunctionBizError"","message":""1001:errCode: 1001 | errMsg: getPhoneNumber参数access_token值不可为空""},"data":null}
然后使用开放平台中→函数列表→云函数URL化→跳转路径(GET方式 放入的access_token 依然是这个错误 )
请大神帮忙解答一下
3 个回复
2***@qq.com
同样 遇到这个问题。
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
看着是传过来了。你拿到了吗?传给 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