插件窝 资源共享 QQ网页授权登陆傻瓜式教程

QQ网页授权登陆傻瓜式教程

vip下载 qq登陆 授权登陆 教程 thinkphp 6646    2019-06-20

1说明:QQ开发文档给的东西很详细 但是想要配置到自己的框架中确实有点麻烦,尤其是要按照他教程中的操作来生成配置文件,比较繁琐,因此本人整理了一份自己处理过后的的官方sdk,本代码包完美结合tp5.1框架,如果用的是5.0的,引入api的路径需要做些许调整

2开始操作:

(1)在本页面下载该代码包,解压放到框架拓展目录里面如图

image.png

(2)修改配置文件,把该文件的appid,appkey,callback改成你在QQ开放中心创建的应用id,

创建应用流程:http://wiki.connect.qq.com/__trashed-2

image.png

(3)自己写一个demo页面,只要一个button按钮就行,

<head>
    <meta charset="UTF-8">
    <title>登录页</title>
</head>
<body>
<button onclick="toLogin()">QQ登陆</button>
</body>
</html>
<script>
    function toLogin()
    {
    //以下为按钮点击事件的逻辑。注意这里要重新打开窗口
    //否则后面跳转到QQ登录,授权页面时会直接缩小当前浏览器的窗口,而不是打开新窗口
       childWindow = window.open("{:url('Login/QqLogin')}","TencentLogin",
       "width=450,height=320");
    }
</script>

(4)php后端操作,创建一个Login类,前端的按钮连接到QqLogin()方法

ps:

1.这里的Env::get("extend_path")是tp5.1的用法,如果框架是5.0的同学要自己改一下,只要能引入代码包中的qqConnectAPI.php就行

2.回调地址中的oauth_consumer_key要改成你自己的appid

<?php
namespace app\home\controller;

use Qqapi\api\QC;
use Qqapi\api\URL;
use think\facade\Env;
require_once(Env::get("extend_path")."/qqapi/qqConnectAPI.php");
/**
* Created by PhpStorm.
* User: pc
* Date: 2019/5/31
* Time: 11:46
*/
class Login extends \think\Controller
{
   /**
    * qq快捷注册登陆
    */
   public function test(){
       return $this->fetch();
   }
   //授权页面,确认授权之后会访问上面配置文件中的callback值的路径
   public function QqLogin(){
       $qc = new QC();
       $qc->qq_login();
   }
   //确定授权回调操作,该方法要和配置文件中的回调地址访问的方法一致,不然会不到方法
   public function callback(){
       $qc = new QC();
       $token = $qc->qq_callback();
       $openid = $qc->get_openid();
       $url = new URL();
       $res = $url->get_contents("https://graph.qq.com/user/get_user_info?
access_token=
{$token}&oauth_consumer_key=101656836&openid={$openid}");
       $info = json_decode($res,true);
       dump($info);
   }
}

(5)需要注意的一点是,创建应用需要域名备案,所以回调地址必须是线上的域名,在本地测试环境确定授权,回调地址可能会报错,所以建议最好是直接在线上环境去应用

(6)确定授权回调之后,下面就是打印出来的数据啦,根据你的需求把对应的数据保存到数据库,然后保存登陆标识sesstion,接着就可以return redirect('User/index');转跳到用户中心啦image.png