收藏
回答

云函数获取UnionID失败

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 wx80729b3c71a89b47 2.2.5


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")
    });
  });
   
}


回答关注问题邀请回答
收藏

2 个回答

  • 哈枫
    哈枫
    2018-12-19

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html官方文档有说,用你的方法必须是用户已关注公众号

    2018-12-19
    有用
    回复
  • 2018-09-28

    有没有大神指导下啊。。。。

    我前端通过button 获取到encryptedData和iv,然后wx.login获取到code,然后调用云函数,把需要的参数都传过来了

    2018-09-28
    有用
    回复 1
    • 2018-09-28

      是不是因为我自己随便弄的一个小程序的测试账号,没有完成微信开放平台绑定小程序流程所以才获取不到UnionID啊?我又仔细看了下文档,感觉问题就是出在这个地方了

      2018-09-28
      回复
登录 后发表内容