主要是考虑到QQ的PHP SDK写的真是太烂了,纯属是普及API知识,而不是到手就可以部署的类库。。反正自己都写了一个了,就拿出来分享下。。

什么也不多说,直接上代码。

Qq_sdk.php

 <?php
/**
* QQ开发平台 SDK
* 作者:偶尔陶醉
* blog: www.stutostu.com
*/ class Qq_sdk{ //配置APP参数
private $app_id = 你的APP ID;
private $app_secret = '你的APP_secret';
private $redirect = 你的回调地址; function __construct()
{ } /**
* [get_access_token 获取access_token]
* @param [string] $code [登陆后返回的$_GET['code']]
* @return [array] [expires_in 为有效时间 , access_token 为授权码 ; 失败返回 error , error_description ]
*/
function get_access_token($code)
{
//获取access_token
$token_url = 'https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&'
. 'client_id=' . $this->app_id . '&redirect_uri=' . urlencode($this->redirect)//回调地址
. '&client_secret=' . $this->app_secret . '&code=' . $code;
$token = array();
//expires_in 为access_token 有效时间增量
parse_str($this->_curl_get_content($token_url), $token); return $token;
} /**
* [get_open_id 获取用户唯一ID,openid]
* @param [string] $token [授权码]
* @return [array] [成功返回client_id 和 openid ;失败返回error 和 error_msg]
*/
function get_open_id($token)
{
$str = $this->_curl_get_content('https://graph.qq.com/oauth2.0/me?access_token=' . $token);
if (strpos($str, "callback") !== false)
{
$lpos = strpos($str, "(");
$rpos = strrpos($str, ")");
$str = substr($str, $lpos + 1, $rpos - $lpos -1);
}
$user = json_decode($str, TRUE); return $user;
} /**
* [get_user_info 获取用户信息]
* @param [string] $token [授权码]
* @param [string] $open_id [用户唯一ID]
* @return [array] [ret:返回码,为0时成功。msg为错误信息,正确返回时为空。...params]
*/
function get_user_info($token, $open_id)
{ //组装URL
$user_info_url = 'https://graph.qq.com/user/get_use
r_info?'
. 'access_token=' . $token
. '&oauth_consumer_key=' . $this->app_id
. '&openid=' . $open_id
. '&format=json'; $info = json_decode($this->_curl_get_content($user_info_url), TRUE); return $info;
} private function _curl_get_content($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
//设置超时时间为3s
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3);
$result = curl_exec($ch);
curl_close($ch); return $result;
} } /* end of Qq_sdk.php */

使用方法:在你网站上放置超链接,地址为:https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=你的APP_ID&redirect_uri=你的回调地址

在回调地址上调用我上面这个qq_sdk即可。

demo如下:

 if(empty($_GET['code']))
{
exit('参数非法');
} include('qq_sdk');
$qq_sdk = new Qq_sdk();
$token = $qq_sdk->get_access_token($_GET['code']);
print_r($token); $open_id = $qq_sdk->get_open_id($token['access_token']);
print_r($open_id); $user_info = $qq_sdk->get_user_info($token['access_token'], $open_id['openid']);
print_r($user_info);

分享QQ第三方登陆SDK的更多相关文章

  1. C#网站实现QQ第三方登陆# C#快速开发教程

    C#网站实现QQ第三方登陆 说起在网站上面可以直接使用QQ登录功能大家并不陌生.但翻其官方提供的SDK包中却没有C#方向的. 但是我们有个牛人叫张善友,做了一个民间SDK.下面我们就是用他所写的SDK ...

  2. QQ第三方登陆

    第一步 引入第三方登陆类,实例化,调用类中方法getInstance()跳转到授权页面 第二步 登陆成功的回调方法,qq_return则是登陆成功会获取到的数据的处理方法 qq_return方法: 本 ...

  3. Android 中实现分享和第三方登陆---以新浪微博为例

    第三方登陆和分享功能在目前大部分APP中都有,分享功能可以将自己觉得有意义的东西分享给身边的朋友,而第三方登陆可以借助已经有巨大用户基础的平台(如QQ和新浪微博)的账号,让用户在使用自己APP的时候不 ...

  4. QQ第三方登陆示例

    先上图 若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现.注册方法可参考链接http://wiki.connect.qq.com/%E6%88%90%E4%B8%BA%E5%BC%80%E ...

  5. php qq第三方登陆

    0.下载QQ登录(QQ互)php版:下载地址:点击打开链接(本文编写时最新版本:V2.1 ) 1.在QQ互联网站注册一个appid,配置网站地址和回调地址. 例:http://yzdd.app1101 ...

  6. QQ互联第三方登陆 redirect uri is illegal(100010)

    想必第一次大家接触QQ第三方登陆都会遇到各种各样的问题,备受折磨,因此,今天我把自己做QQ登陆的过程描述一下,希望给大家提供参考,少走弯路. 在开发之前,我们先了解下QQ登陆的流程 第一:查看熟悉 网 ...

  7. 第三方登陆-qq互联

    看到很多网站都有第三方登陆,使用业余时间自己也要实现一个第三方登陆的功能: 1.登陆qq互联的网站:https://connect.qq.com/index.html 2.点击头像进行资料申请 --- ...

  8. 腾讯QQ快捷登陆

    腾讯QQ快捷 相关各语言对接qq快捷登录教程 [C#]QQ开放平台(QQ站外登录)_流程和源码示例 j2ee中实现QQ第三方登陆 web实现QQ第三方登录 asp.net网站接入QQ登录 php实现q ...

  9. QQ第三方登录(预备节)

    第一次很多时候,用户因为复杂的注册程序,而不愿意再体验我们的网站服务,我们可以通过QQ第三方授权,这样既保证了用户数,而且也极大的提高了用户体验.废话就不多说了,直接进入正题... 要实现QQ第三方登 ...

随机推荐

  1. Hive是什么!

    Hive是什么! 一直想抽个时间整理下最近的所学,断断续续接触hive也有半个多月了,大体上了解了很多Hive相关的知识.那么,一般对陌生事物的认知都会经历下面几个阶段: 为什么会出现?解决了什么问题 ...

  2. Linux命令记录

    端口号 1.查看端口号 使用netstat -anp来查看那些端口被打开.加参数'-n'会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049, ftp->21,因此可以开启两 ...

  3. Web2py也有意思的

    多学学,以后可以方便的自己写代码了. 对于各种WEB框架,这也是打一个基础的时候. 相信学入门了,对PHP的,JAVA的WEB框架,都是能理解更深入的. def index(): "&quo ...

  4. 带’*’号字符串的匹配

    目标: 判断源字符串中是否含有指定子串,子串可能会有*号通配符. 初步测试没问题.记录下来.后面要是有问题再来纠正. #include <string> using namespace s ...

  5. uva 10859 - Placing Lampposts dp

    题意: 有n个节点,m条边,无向无环图,求最少点覆盖,并且在同样点数下保证被覆盖两次的变最多 分析: 1.统一化目标,本题需要优化目标有两个,一个最小灯数a,一个最大双覆盖边数b,一大一小,应该归一成 ...

  6. openstack neutron debugs lists

  7. HBase 事务和并发控制机制原理

    作为一款优秀的非内存数据库,HBase和传统数据库一样提供了事务的概念,只是HBase的事务是行级事务,可以保证行级数据的原子性.一致性.隔离性以及持久性,即通常所说的ACID特性.为了实现事务特性, ...

  8. ERP售前顾问形象寓意

    几个做销售的朋友一起去X山旅游,一群爱侃的人凑在一起,一顿云山雾罩的神吹是少不了的.突然看到一栋平房前面伸出一个大大的幌子:铁嘴铜牙.下面一行小字:不灵不要钱(管理专家:提供专业解决方案). 销售都是 ...

  9. linux 切换用户之后变成-bash-x.x$的解决方法

    我们平时在linux下切换用户后命令行为什么会变成-bash-3.2$呢,我们来分析一下,这就是跟linux的机制有关联了,因为在linux下每次通过useradd创建新的用户时,都会将所有的配置文件 ...

  10. weblogic迁移随手记

    新建域的脚本weblogic  登录缓慢监听地址的修改,hosts修改vim +/securerandom /usr/java/jdk1.7.0_71/jre/lib/security/java.se ...