收藏
回答

使用login code获取openid失败

问题模块
API和组件

appid:wxd4298cf3aff9db35

获取openid返回的错误;

 errcode: 40029 errMsg: invalid code, hints: [ req_id: 9r2gBa0398ns84 ]

最后一次编辑于  2017-05-31  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

13 个回答

  • Can🌴
    Can🌴
    2017-06-01

    https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject


    或者贴下你的代码

    2017-06-01
    赞同
    回复
  • 尚广川
    尚广川
    2017-12-18

    解决了吗

    2017-12-18
    赞同
    回复
  • . `` 、, ' `
    . `` 、, ' `
    2017-06-02

    ok;明白了;非常感谢!!

    2017-06-02
    赞同
    回复
  • . `` 、, ' `
    . `` 、, ' `
    2017-06-01

    再补一张小程序端wx.login()返回值的图:


    麻烦帮忙看下,万分感谢;

    2017-06-01
    赞同
    回复
  • . `` 、, ' `
    . `` 、, ' `
    2017-06-01
    //获取code
    var getCode = function(callback) {
      wx.login({
        success: function(res){
          if(res.code) {
            console.log('syslogin: ', res)
            console.log('request id:', res.code)
            typeof callback === "function" && callback(res.code)
          }
          else {
            console.log('获取code失败!' + res.errMsg)
          }
        }
      })
    }
     
    // 获取access_token
    function getToken (callback) {
      getCode((code) => {
        wx.getUserInfo({
          success: function(res){
            console.log('用户允许授权')
            var request = "code=" + code
            wx.request({
              url: Api.session,
              data: {
                code: request,
              },
              method: 'GET',
              header:{
                "Content-Type": "application/x-www-form-urlencoded"
              },
              success: function(res){
                typeof callback == "function" && callback(res.data)
              },
              fail: function() {
                console.log('wx.request 请求失败')
              }
            })
          },
          fail: function(res) {
            if(res.errMsg) {
              console.log('用户拒绝授权', res)
              typeof callback == "function" && callback({errMsg : "userDenyed"})
            }
          }
        })
      })
    }

    小程序端代码

    //golang代码,服务端
    func Login(ctx *context.Context) {
        ctx.Request.ParseForm()
     
        code := ctx.Request.FormValue("code")
        logs.Info("client login code:", code)
        //向微信服务器发起请求
        tr := &http.Transport{
            TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
        }  
     
        appid := "wxd4298cf3aff9db35"
        secret := "XXXXX"  //secret确认过,没有问题
        url := "https://api.weixin.qq.com/sns/jscode2session?appid=" + appid + "&secret=" + secret + "&js_code=" + code + "&grant_type=authorization_code"
        client := &http.Client{Transport: tr}
        resp, err := client.Get(url)
        if err != nil {
            logs.Error(err.Error())
            rets.WriteHttpErrMsgs(ctx.ResponseWriter, 500, err.Error(), err)
            return
        }  
     
        defer resp.Body.Close()
        if resp.StatusCode == 200 {
            body, err := ioutil.ReadAll(resp.Body)
            var data ZtgameLoginRt
            err = json.Unmarshal([]byte(body), &data)
            if err != nil {
                rets.WriteHttpErrMsgs(ctx.ResponseWriter, 500, err.Error(), err)
                return
            }
            logs.Info("errcode:", data.ErrCode, "errMsg:", data.ErrMsg)
            //logs.Info("winxin server login return: ", data.Openid)
            //logs.Info(data.Session_key)
    ....
    }


    2017-06-01
    赞同
    回复
  • . `` 、, ' `
    . `` 、, ' `
    2017-06-01

    待会贴代码

    2017-06-01
    赞同
    回复
  • . `` 、, ' `
    . `` 、, ' `
    2017-06-01

    这..........

    2017-06-01
    赞同
    回复
  • maq
    maq
    2017-06-01

    常做善事,常存善念……人品够了,就会有一个昵称里带着蓝色【官】字的官技进到这个帖子里来……

    2017-06-01
    赞同
    回复
  • . `` 、, ' `
    . `` 、, ' `
    2017-06-01

    确实是如此,弱弱问一下,如何请求官方协助啊;

    2017-06-01
    赞同
    回复
  • maq
    maq
    2017-06-01

    真如你所说的这种情况,那实在是不好说问题在哪里了,也许只能请官方协助检查了。


    不过,其实张冠李戴的情况是挺容易出现的,有时候就是瞪着眼睛看着也看不出来……

    2017-06-01
    赞同
    回复

正在加载...