//第三方登录 ----QQ号码登录 // 1> 前置条件: QQ号码 + 公网通过域名可以访问的web服务器(网站根目录具有读写权限) 服务器运行环境 // 2> 申请AppID 与 APPKey QQ互联 :http://connect.qq.com // 3> 创建注册 : 网站地址:公网可访问的域名 回调地址: 网站首页 -> 复制 meta标签 // 4> 开始验证->创建应用 App ID: dfhshdfjkvj12123 App Key : njdfhjdgfgjkhdjkgh453sd4f54d5gdr //1 callback.php <?php // echo $_GET['code']; $oauth = new Oauth(); $accessToken = $oauth -> qq_callback(); $openId = $oauth->get_openid(); setcookie('qq_caaessToken',$accessToken,time()+86400); setcookie('qq_openid',$openId,time()+86400); header('Location: index.php'); ?> // 2. 引入官方SDK 从开方平台的文档中心下载SDK qqConnect_Server_SDK-php_v2.1.zip // SDK解读: 文档资料 -> oauth开发指引 -> 开发攻略 _Server_side (服务端) // SDK 核心类与方法 : // 登录授权的三个主要类 *.class.php // Recorder.class.php[配置读写与SESSION存取] ~ __construct() $incFileContents = file(ROOT,'comm/inc.php');读入配置文件json字符串 $incFileContents = $incFileCotents[1]; $this->inc = json_decode($incFileContents); 解析成php对象 ~ readInc($name) return $this->inc->$name; ->readInc('appid') 读取配置文件中的AppID // URL.class.php [基于curl库的get与POST请求] ~ conbineURL($baseURL,$keysArr); $conbined = $baseURL. '?'; 拼接? foreach($keysArr as $key=>$val) $valueArr[] = '$key=$val';拼接参数 $keyStr = implode("&",$valueArr); 使用&拼接参数键值对 生成形如:http:// xxx.com?a=b&c=d...的链接 get($url,$keyArr) ; 发送get请求 post($url,$keyArr,$flag = 0);发送POST请求 // Oauth.class.php [Oauth相关的URL动态拼接与token请求] qq_login ; 拼接QQ登录页面URl $appid = $this->record->readInc('appid'); 读取AppID $callback = $this->record->readInc('callback'); 读取回调地址 $scope = $this->record->readInc('scope'); 读取授权列表 // ..........生成唯一随机字符串防CSRF攻击 $state = MD5(uniqid(rand(),TURE)); 原样返回参数 $this->recorrd->write('state',$state); state写入SESSION中 $ketArr = array( 'response_type' => 'code', 'client_id' => $appid, 'redirect_url' => $callback, 'scope' => $scope, 'state' => $state, ); // index.php
PHP第三方登录--QQ登录
最新推荐文章于 2021-10-19 10:28:17 发布