分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

ThinkPHP第三方登录-QQ登录

发布时间:2023-09-06 01:24责任编辑:郭大石关键词:PHP

参考:思梦教育

1、QQ互联(链接地址:https://connect.qq.com/index.html),进行开发者认证(未认证的情况下),有公司和个人两种认证方式,个人开发者选择个人认证就好,准备好身份证电子版。认证界面如图一,认证不做赘述。

(图一)

2、认证通过界面如图二,认证完,我们将创建应用如图三,选择创建网站应用,填写好个人信息如图四。

(图二)

(图三)

(图四)

3、应用创建好后,会有大约2天的认证时间,认证通过的情况下,可在应用管理下查看。成功创建的应用如图五

(图五)

4、代码部分,tp3.2版本,新建QqController.class.php,名称自拟,但是需要符合你的回调地址。

<?php/* * P:QQ登录 * U:shenlin * T:2017-10-18 * Q:297760026 * */namespace Home\Controller;use Think\Controller;class QqController extends Controller{ ???//发起请求 ???public function qqsend(){ ???????//参数 ???????$url = "https://graph.qq.com/oauth2.0/authorize"; ???????$param[‘response_type‘] = "code"; ???????$param[‘client_id‘]="你的appid"; ???????$param[‘redirect_uri‘] ="你的回调地址"; ???????$param[‘scope‘] ="get_user_info"; ???????//-------生成唯一随机串防CSRF攻击 ???????$param[‘state‘] = md5(uniqid(rand(), TRUE)); ???????$_SESSION[‘state‘] = $param[‘state‘]; ???????//拼接url ???????$param = http_build_query($param,"","&"); ???????$url = $url."?".$param; ???????header("Location:".$url); ???} ???//回调 ???public function qqback(){ ???????$code = I(‘get.code‘); ???????$state = I(‘get.state‘); ???????if($code && $state == $_SESSION[‘state‘]){ ???????????//获取access_token ???????????$res = $this->getAccessToken($code,"你的appid","你的appkey"); ???????????dump($res); ???????????exit(); ???????????parse_str($res,$data); ???????????$access_token = $data[‘access_token‘]; ???????????$url ?= "https://graph.qq.com/oauth2.0/me?access_token = $access_token"; ???????????$open_res = $this->httpsRequest($url); ???????????if(strpos($open_res,"callback") !== false){ ???????????????$lpos = strpos($open_res,"("); ???????????????$rpos = strrpos($open_res,")"); ???????????????$open_res = substr($open_res,$lpos + 1 ,$rpos - $lpos - 1); ???????????} ???????????$user = json_decode($open_res); ???????????$open_id = $user->openid; ???????????$url = "https://graph.qq.com/user/get_user_info?access_token=$access_token&oauth_consumer_key=你的appid&open_id = $open_id"; ???????????$user_info = $this->httpsRequest($url); ???????????//输出qq用户信息 ???????????dump($user_info); ???????} ???????$this->display(); ???} ???//通过Authorization Code获取Access Token ???public function getAccessToken($code,$app_id,$app_key){ ???????$url="https://graph.qq.com/oauth2.0/token"; ???????$param[‘grant_type‘]="authorization_code"; ???????$param[‘client_id‘]=$app_id; ???????$param[‘client_secret‘]=$app_key; ???????$param[‘code‘]=$code; ???????$param[‘redirect_uri‘]="你的回调地址"; ???????$param =http_build_query($param,"","&"); ???????$url=$url."?".$param; ???????return $this->httpsRequest($url); ???} ???//httpsRequest ???public function httpsRequest($post_url){ ???????$ch = curl_init(); ???????curl_setopt($ch, CURLOPT_URL,$post_url);//要访问的地址 ???????curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//执行结果是否被返回,0是返回,1是不返回 ???????curl_setopt($ch, CURLOPT_TIMEOUT, 30);//设置超时 ???????$res = curl_exec($ch);//执行并获取数据 ??????return $res; ???????curl_close($ch); ???}}

  

ThinkPHP第三方登录-QQ登录

原文地址:http://www.cnblogs.com/shenlin/p/7826690.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved