tp5.1微信登录(微信开放平台)

流程1:获取请求网址就是一个有二维码的网页
流程2:扫码授权后获取code
流程3:通过code获取微信基本信息及openid

 'success', 'url' => "https://open.weixin.qq.com/connect/qrconnect?appid=" . $this->AppID . "&redirect_uri=" . $this->Redirect_uri . "&response_type=code&scope=" . $this->scope . "&state=STATE#wechat_redirect"]);
    }

    //这里就是接收code还有state。用来做操作
    public function getToken()
    {
        $code = $_GET['code'];
        //判断是否授权
        if (empty($code)){
            $this->error('授权失败');
        }
        $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->AppID . '&secret=' . $this->AppSecret . '&code=' . $code . '&grant_type=authorization_code';
        //获取token,为了获取access_token 如果没有就弹出错误
        $token = json_decode(file_get_contents($token_url));
        if (isset($token->errcode)) {
            echo '

错误:

' . $token->errcode; echo '

错误信息:

' . $token->errmsg; exit; } $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=' . $this->AppID . '&grant_type=refresh_token&refresh_token=' . $token->refresh_token; //获取access_token ,为了获取微信的个人信息,如果没有就弹出错误 $access_token = json_decode(file_get_contents($access_token_url)); if (isset($access_token->errcode)) { echo '

错误:

' . $access_token->errcode; echo '

错误信息:

' . $access_token->errmsg; exit; } $user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token->access_token . '&openid=' . $access_token->openid . '&lang=zh_CN'; //获取用户信息 $user_info = json_decode(file_get_contents($user_info_url)); if (isset($user_info->errcode)) { echo '

错误:

' . $user_info->errcode; echo '

错误信息:

' . $user_info->errmsg; exit; } //这里转换为数组 $rs = (array)$user_info; //返回用户信息 return $rs; }

这里说明一下,传code我不是直接传到这里的,我还有另外一个操作方法,可以存入数据库或者其他操作

//另外一个方法,code还有state传到这个方法里面来
 public function getWx()
    {
        header('Access-Control-Allow-Origin:*');//允许跨域请求
           $code = $_GET['code'];//接收code
           $weixin = Controller("Weixin");//实例化上个类
            //获取用户信息
            $info = $weixin->getToken($code);接受返回值,数组的
             $res = Db::name('user')
                        ->where('user_id', $checkToken['data']['data']['user_id'])
                        ->update(array('openid' => $info['openid'], 'nickname' => $info['nickname']));//存入数据库
                    $data = Db::name('user')
                        ->where('user_id', $checkToken['data']['data']['user_id'])->find();//查一下,可能办法有点笨
                    if ($res) {
                        return json(['status' => 'success', 'msg' => $data]);
                    } else {
                        return json(['status' => 'error', 'msg' => '绑定失败']);
                    }
    }

以上就是比较完整的操作步骤了,如果喜欢可以评论一下,点个关注,博主发的所有波本都是自己做过的,质量保证

你可能感兴趣的:(PHP杂项)