用wx.login + code2Session的方式在云函数中获取UnionID失败
云控制台打印出来的解密之后的data
这是我云函数的代码,WXBizDataCrypt用的是官方的Node解密demo的文件
// 云函数入口文件 const cloud = require( 'wx-server-sdk' ) const request = require( 'request' ); const WXBizDataCrypt = require( './WXBizDataCrypt' ) cloud.init() const db = cloud.database(); // 云函数入口函数 exports.main = async (event, context) => { let url = 'https://api.weixin.qq.com/sns/jscode2session?appid=wx80729b3c71a89b47&secret=d7425e5d465a3ee7e6f3a0aca3ab8ab2&js_code=' + event.code + '&grant_type=authorization_code' ; return new Promise((resolve, reject) => { new Promise((resolve, reject) => { try { request(url, function (error, response, body) { if (!error && response.statusCode == 200) { return resolve(body) } else { return reject(err) } }) } catch (err) { return reject(err) } }).then(res => { console.log(res) console.log(JSON.parse(res)) let result = JSON.parse(res); let appId = event.userInfo.appId; let sessionKey = result.session_key; console.log(sessionKey) let encryptedData = event.encryptedData; let iv = event.iv; let pc = new WXBizDataCrypt(appId, sessionKey); let data = pc.decryptData(encryptedData, iv); console.log( "----data--------:" , data) console.log( "-------UnionID--------:" , data.unionId) return resolve( "ok" ) }); }); } |
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html官方文档有说,用你的方法必须是用户已关注公众号
有没有大神指导下啊。。。。
我前端通过button 获取到encryptedData和iv,然后wx.login获取到code,然后调用云函数,把需要的参数都传过来了
是不是因为我自己随便弄的一个小程序的测试账号,没有完成微信开放平台绑定小程序流程所以才获取不到UnionID啊?我又仔细看了下文档,感觉问题就是出在这个地方了