1.在页面中准备一个跳转qq互联授权登陆页面的a标签或者在控制器中跳转/**

* 跳转登陆页面

*

* @return \think\response\Redirect

*/

public function index()

{

$my_url = 'http://www.kutucn.com/api';

$SESSION = md5((string)rand());

Session::set('state', $SESSION);

return redirect("https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=" . $this->appid . "&redirect_uri=" . urlencode($my_url) . "&state=" . $SESSION);

}

注释:

my-url 为你qq互联上面填写的回调域名

id 跟key为qq互联应用的参数

2.获取token/**

* 获取access_token

*

* @param $code

* @return array|false|string

*/

private function getToken($code)

{

function convertUrlQuery($query)

{

$queryParts = explode('&', $query);

$params = array();

foreach ($queryParts as $param) {

$item = explode('=', $param);

$params[$item[0]] = $item[1];

}

return $params;

}

$client_id = $this->client_id; // APPID

$client_secret = $this->client_secret; // APPSECRET

$url = urlencode('http://www.kutucn.com/api'); // 授权回调域

$data = file_get_contents("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=$client_id&client_secret=$client_secret&code=$code&redirect_uri=$url");

$data = convertUrlQuery($data);

return $data;

}

3. 用token换取openid 再获取用户info信息 再加上自己网站的登陆逻辑/**

* 获取token 网站登陆逻辑

*

* @param Request $request

* @param $code

* @param $state

* @return \think\response\Json|\think\response\Redirect

* @throws \think\db\exception\DataNotFoundException

* @throws \think\db\exception\DbException

* @throws \think\db\exception\ModelNotFoundException

* @Route("", method="GET")

*/

public function index(Request $request, $code, $state)

{

$client_id = $this->client_id;

$client_secret = $this->client_secret;

// 获取第一步的token

$data = $this->getToken($code);

$access_token = $data['access_token'];

$refresh_token = $data['refresh_token'];

// 获取30天期限的token

$result = file_get_contents("https://graph.qq.com/oauth2.0/me?access_token=$access_token");

$result = explode('(', $result);

$result = explode(')', $result[1])[0];

$result = json_decode($result, true);

if (key_exists('error', $result)) {

return $this->callJson($result, 2, '登陆失败');

} else {

// 获取用户信息

$openid = $result['openid'];

$info = file_get_contents("https://graph.qq.com/user/get_user_info?access_token=$access_token&oauth_consumer_key=$client_id&openid=$openid");

$info = json_decode($info, true);

$inset = [

'headerimg' => $info['figureurl_qq'],

'province' => 0,

'city' => 0,

'county' => 0,

'address' => '',

'nickname' => $info['nickname'],

'openid' => $openid,

'sex' => $info['gender'],

'create_time' => time(),

'is_auth' => 1,

'update_time' => time(),

'unionid' => 0,

'token' => $data['access_token'],

'auth' => 0,

'email' => '',

'phone' => 0,

'desc'=> '',

]; // 建立一个存储登陆信息的数组,以便存入用户数据表

}

$url = Cookie::get('url'); // 获取前端页面存储的登陆前页面url

if (empty($url)) {

return redirect($url);// 前端页面 写一个公共的js 用cookie存储当前的页面url,以便返回登陆前的页面

} else {

return redirect($_SERVER["REQUEST_SCHEME"] . '://' . $_SERVER['HTTP_HOST']); // 如果cookie不存在就返回主页

}

}

以上 qq登陆完成,测试可正常使用。

html5qq授权登陆,php 第三方登陆接入qq互联相关推荐

  1. springSecurity的学习笔记--使用spring-Security完成表单登陆,手机验证码登陆,第三方登陆

    环境搭建好后,之后的练习进入了一个十分痛苦的阶段!! 但是与此同时,收获也是比较可观的. 老师通过详细的视频讲解,完成了表单登陆,包括账号密码和验证码登陆,手机验证码登陆,第三方登陆. 每一个部分都进 ...

  2. 网站接入QQ互联(JAVA版)

    简介: QQ互联是腾讯旗下的开放平台,通过QQ互联,网站主和开发者可以申请接入QQ登录.用户可以使用QQ账号登录接入的站点,通过添加分享和赞组件,将站点内容分享到QQ空间和朋友网,通过获取API授权, ...

  3. qq互联登录授权php配置,php如何整合qq互联登录

    相关推荐:<PHP培训> php整合qq互联登录 接入QQ互联平台后,我们就可以让用户通过QQ帐号登录来登陆我们的网站,这样减少了注册的繁琐,可以更快 .更便捷的为了我带来更多的用户,下面 ...

  4. 第三方登录接入-qq,weibo-java

    开发之前 需求:网站接入qq,sina微博登录,本文最后付效果图: 说明:大部分网站本身是需要用户概念的,很多操作依附于用户,而qq或微博作为一种登录方式指向用户而已,我参考了一下其他网站的做法, 一 ...

  5. java第三方登录接口_第三方登录接入-qq,weibo-java

    开发之前 需求:网站接入qq,sina微博登录,本文最后付效果图: 说明:大部分网站本身是需要用户概念的,很多操作依附于用户,而qq或微博作为一种登录方式指向用户而已,我参考了一下其他网站的做法, 一 ...

  6. 接入QQ互联(QQ登录)时,$_REQUEST['state'] == $_SESSION['state'] CSRF验证失败,原因是访问域名和回调域名不一致(虽然两个域名绑定的是同一个服务器的项目)

    昨天晚上在调试接入QQ登录的时候,感觉一切文件路径以及配置参数都没什么问题了,准备在线上测试的时候,却一直无法登录成功,返回的错误码100007,错误提示是:The state does not ma ...

  7. QQ登陆第三方Demo(QQ互联)

    项目需要做QQ.微博等登陆第三方的功能,第一次接触,虽然官网上有sdk,接口写的很好,调用即可,但是没有文档,看着头疼就自己写了 步骤不多说: 一.申请AppID和AppKey,申请地址:点击打开链接 ...

  8. qq扫码认证登录php,PHP实现第四方QQ微信扫码登陆,不接入qq互联以及微信开发者平台...

    [PHP] 纯文本查看 复制代码<?php class Curl_Api { public $ua = "Mozilla/5.0 (Windows NT 10.0; WOW64) Ap ...

  9. 个人博客系统开发总结之 第三方登录(QQ、微博)

    当别人访问我的博客系统时,如果需要评论,就需要登录.如果此时要求注册,就比较麻烦,并且会引起访问者的反感.于是就采用第三方登录.目前支持QQ.微博登录. QQ登录 QQ互联开放平台为第三方网站提供了丰 ...

  10. Oauth2.0 QQ微信微博实现第三方登陆

    一.写在前面 目前对于大多数的App或Web网站都支持有第三方登陆这个功能,用户可使用 QQ/ 微信/ 微博 帐号快速登录你的网站,降低注册门槛,为你的网站带来海量新用户.最近在新项目上刚好用到了,在 ...

最新文章

  1. Linux下ssh登录速度慢的解决办法
  2. 图灵测试70载,回顾对话机器人的经典实践和最新进展
  3. matlab能做深度图像的识别吗,Matlab图像识别/检索系列(6)-10行代码完成深度学习网络之基于CNN的图像分类...
  4. Qt Creator添加Qt版本
  5. 【水】uva10037 过桥
  6. 5分绩点转4分_高考语文如何考上120分?衡中老师建议:这5点高中生必须重视
  7. erlang的epmd指定端口范围验证及端口权限配置
  8. Java8 中通过 Stream 对列表进行去重的几种方法
  9. .net WebApi 批量文件进行压缩zip以二进制流传输至前端(Vue)下载
  10. CSS 布局 - Overflow
  11. js 開始时间,当前时间,结束时间的比較
  12. excel表格打印每页都有表头_分享|1分钟学会,让打印的表格每页自带标题行
  13. 刚构桥的优缺点_桥梁钢结构特点及优缺点
  14. 求一个数的整数分化问题(python)实现
  15. 多易教育KAFKA实战(2)-java生产者客户端API示例代码
  16. 线型(Line styles)的英文名称
  17. maskrcnn_benchmark 代码详解(更新中...)
  18. 大学生电子设计竞赛总结
  19. C语言 | 递归将一个整数n转换成字符串
  20. 能力是由短板决定的 交朋友的一个原则就是自己够朋友 from 纸牌屋2

热门文章

  1. html 样式 tab键 空格,设置Visual Studio2013的TAB键为4个空格
  2. 深度学习论文: Compounding the Performance Improvements of Assembled Techniques in a CNN及其PyTorch实现
  3. Stack Frame JAVA运行时数据区域之栈帧
  4. Android系统启动源码分析
  5. Team Leader 究竟要不要写代码?
  6. java 实现cmyk转rgb图片格式
  7. 预设Date时间格式化参数
  8. 分享几个快乐有趣的网站
  9. win10系统迁移到固态硬盘ssd
  10. oppoa5降级教程_OPPO A5官方原厂固件rom刷机包_全量系统降级包回退包下载A.14版