ThinkPHP 实现QQ授权登录

1.首先你需要了解OAuth2.0协议

 简介:

        OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。
        QQ登录OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。

2.代码实例

   前端代码如下:   

        a标签地址是qq授权方法:这里使用的是方法进入,并不是使用的路由


  •    后端代码如下:

            首先我们先在您的composer.json中加入配置:

    "require": {
            "yurunsoft/yurun-oauth-login": "~3.0"
        }

            在项目根目录使用composer update进行composer更新

          我们在控制器方法中第一步先书写一个构造函数进行我们的实例化

    //注意!!
    //下方的参数需要你在QQ互联上面进行去申请注册及审核
    //不管审核成功还是审核失败,qq登录的接口都可以使用,区别是,审核成功后所有人的qq都可以登录,审核失败只有申请人的qq可以正常登录
    
    public function __construct(App $app)
        {
            parent::__construct($app);
    
            //实例化
            $this->qqAuth = new \Yurun\OAuthLogin\QQ\OAuth2(config('qqAuth.appid'), config('qqAuth.appSecret'), config('qqAuth.callbackUrl'));
        }
    
    
    //参数在config的qqAuth.php下面定义
    //QQ授权信息
        'appid'=>'****',
        'appSecret'=>'****',
        'callbackUrl'=>'****',

            进入到我们的授权方法

        /**
         *QQ登录授权页面
         */
        public function auth(){
            $url = $this->qqAuth->getAuthUrl();
            header('location:' . $url);
        }

            我们要下载sdk包https://wiki.connect.qq.com/sdk%e4%b8%8b%e8%bd%bd,将包解压后放在我们的public下面,实现我们的授权

    ThinkPHP 实现QQ授权登录_第1张图片

    SDK配置:

       将解压后的目录,移动到public/plugins/目录下,改名为qq

    ThinkPHP 实现QQ授权登录_第2张图片

     

        在浏览器直接访问:域名/plugins/qq/index.php

    ThinkPHP 实现QQ授权登录_第3张图片

       点击“设置配置项”,进入配置页面

       会让你进行一下的配置,这里的参数和我们上方实例化的参数一致

         请求的授权列表可以选择get_user_info

          点击配置就进入到我们的qq授权了

        callback是我们的回调地址

    ThinkPHP 实现QQ授权登录_第4张图片

     配置完成之后我们就可以进行我们的验证了,可以是判断是否为第一次登录,也可以更新我们的登录时间,去判断用户

    //这是我们的回调地址
    public function qqcallback(Request $request){
            //获取Token
            $accessToken = $this->qqAuth->getAccessToken($request->get('state'));
            //返回的信息
            $userInfo = $this->qqAuth->getUserInfo($accessToken);
            //获取id
            $openid = $this->qqAuth->openid;
            //第三方登录类型
            $opentype = "qq";
            $nickname = $userInfo['nickname'];
            // 用户 注册 更新
            //略
        }

    以上就是我们的QQ第三方登录,后面我会继续完善

    你可能感兴趣的:(p2p,网络协议,网络,thinkphp)