php 做微信认证登陆 返回错误 Trying to get property of non-object

发布于 2022-09-06 10:12:56 字数 2690 浏览 31 评论 0

php 做微信认证登陆 返回错误 Trying to get property of non-object 已经添加了白名单和 网页授权,不知道是不是我代码问题,求解答。附上错误代码:

public function getOpenId(){

    $openid=cookie('openid');
    if($openid){
        return $openid;
    }else{        
         if (in_wechat()) {                              
            $redirect_uri = request()->url(true);                    
            $AccessCode   = $this->getAccessCode($redirect_uri, "snsapi_base");                
            if ($AccessCode !== FALSE) {                    
                // 获取accesstoken和openid
                $Result      = $this->getAccessToken($AccessCode);
                $openid      = $Result->openid;
                $AccessToken = $Result->access_token;
                cookie('openid',$openid);
                               
                return $openid;
            }               
        } else {
            return false;
        }        
    }
}
private function getAccessToken($code){

    $RequestUrl            = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->config['appid']."&secret=".$this->config['appsecret']."&code=" . $code . "&grant_type=authorization_code";
    
    $Result                = json_decode(Curl::get($RequestUrl), true);
    
    if(isset($Result['errcode'])){
        return 'get access token fail';
    }
    
    $_return               = new \stdClass();
    
    echo $_return->access_token = $Result['access_token'];
    $_return->openid       = $Result['openid'];
    return $_return;
           
}

private function getAccessCode($redirect_uri, $scope) {

    $get=input('param.');
    
    $request_access_token_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$this->config['appid']."&redirect_uri=http%3a%2f%2fjfshop.gxwdbg.com%2fmobile&response_type=code&scope=snsapi_userinfo#wechat_redirect";
    if (empty($get['code'])) {
        // 未授权而且是拒绝
        if (!empty($get['state'])) {
            return FALSE;
        } else {
            // 未授权
            $redirect_uri = urlencode($redirect_uri);
            $RequestUrl   = str_replace("[REDIRECT_URI]", $redirect_uri, $request_access_token_url);
            $RequestUrl   = str_replace("[SCOPE]", $scope, $RequestUrl);
                        
            // 获取授权
            header("location:" . $RequestUrl);
            exit(0);
        }
    } else {
        // 授权成功 返回 access_token 票据
        return $get['code'];
    }
}

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凶凌 2022-09-13 10:12:56

getAccessToken这个方法你没放出来,是这个函数有问题,没有返回对象。

爱*していゐ 2022-09-13 10:12:56

已解决,缓存导致参数没有改变

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文