收藏
回答

python 后台获取微信用户信息(小程序) 在解密的时候第一次总是报错, 第二次才会成功?

WXBizDataCrypt.py
pc = WXBizDataCrypt(appid, session_Key)
return pc.decrypt(encryptedData, iv)
pc.decrypt 报错ValueError: Extra data: line 1 column 2 - line 2 column 168 (char 1 - 212)

def get_wechat_info(request):
    data = request.DATA.copy()

    code = data.get("code")
    encryptedData = data.get("encryptedData")
    iv = data.get("iv")

    appid = data.get('appid')

    secret = CenterAppInfo.objects.get(app_id=appid).app_secret

    res = requests.get(
        url="https://api.weixin.qq.com/sns/jscode2session",
        params={
            "appid": appid,
            "secret": secret,
            "js_code": code,
            "grant_type": 'authorization_code'
        }
    )

    if res:
        session_Key = res.json().get("session_key")
        if all([session_Key, iv, encryptedData]):
            pc = WXBizDataCrypt(appid, session_Key)
            return pc.decrypt(encryptedData, iv)


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

1 个回答

  • 朝酒晚舞
    朝酒晚舞
    2020-07-09

    前端login的时机不对吧?是 bindgetuserinfo里去wx.login拿code的么?

    2020-07-09
    有用
    回复 4
    • Robert
      Robert
      2020-07-09
      跟前端确认,是的
      2020-07-09
      回复
    • 朝酒晚舞
      朝酒晚舞
      2020-07-09回复Robert
      调用方式错了。让他把wx.login放在onLoad先执行一次
      2020-07-09
      1
      回复
    • Robert
      Robert
      2020-07-09
      好的,感谢
      2020-07-09
      回复
    • 朝酒晚舞
      朝酒晚舞
      2020-07-09回复Robert
      wx.login放onLoad先执行一次,拿到code。下面授权时再取这个code去你这里解密就可以了。
      2020-07-09
      回复
登录 后发表内容
问题标签