收藏
回答

如何解决公众频繁提示网页授权 api unauthorized 的问题?

     /**
     * 获取用户信息
     * @throws \Exception
     * @return array
     */
    public static function getUserInfo(string $code = '')
    {
        $appid = config('site.wechat_app_id');
        $secret = config('site.wechat_app_secret');

        $query = http_build_query([
            'appid' => $appid,
            'secret' => $secret,
            'code' => $code,
            'grant_type' => 'authorization_code'
        ]);
        // 常量值GET_USER_ACCESS_TOKEN_URL :'https://api.weixin.qq.com/sns/oauth2/access_token?'
        $oauth2Url = self::GET_USER_ACCESS_TOKEN_URL . $query;
        $oauth2 = json_decode(\fast\Http::get($oauth2Url), true);

        $query = http_build_query([
            'access_token' => $oauth2['access_token'],
            'openid' => $oauth2['openid'],
            'lang' => 'zh_CN',
        ]);
        // 常量值GET_USERINFO_URL :'https://api.weixin.qq.com/sns/userinfo?'
        $get_user_info_url = self::GET_USERINFO_URL . $query;
        $respone = \fast\Http::get($get_user_info_url);
        $userinfo = json_decode($respone, true);
        if (empty($userinfo['openid'])) {
            // 在这里会记录大量日志
            \think\Log::record($respone, 'wechat_auth_log');
            throw new \Exception('授权失败!');
        }
        return $userinfo;
    }

上图是代码,每次都是重新获取网页授权access_token ,会频繁的提示 (对了这是一个公众号投票应用,无需关注公众号投票,目前总票数371482,总投票人数193070,每人每天可以给不同参赛者投5票)

[ wechat_auth_log ] {"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: JIbDMzmoRa-luCf ]"}

公众号appid: wxb67f2683fbfb45f6

最后一次编辑于  2020-08-03
回答关注问题邀请回答
收藏

1 个回答

  • 哄哄
    哄哄
    2020-07-20

    目测是在在获取 userinfo 时没有很正确拼接 access_token 到 url 上。

    1.检查是否获取到 access_token

    2.检查在 /sns/userinfo 接口上是否正确拼接 access_token 参数

    2020-07-20
    有用 1
    回复 1
    • 痴心妄想
      痴心妄想
      2020-07-20
      谢谢你的回复,

      在这一块的返回值进行了日志记录,\fast\Http::get($oauth2Url)。
      有时候又是数据,有时候什么都没有,(如下图,未进行json_deconde转换前的原始数据)。
      应该是这一块的问题,既然出错了,也不给错误码。但是这一块应该怎么解决呐。
      2020-07-20
      回复
登录 后发表内容
问题标签