主要是考虑到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. Altium Designer规划电路板

           所谓规划电路板就是根据电路的规模以及用户的需求,确定所要制作电路板的物理外形尺寸和电气边界.电路板规划的原则是在满足用户要求的前提下,使板面美观而且利于后面的布线工作. 1. 定义板的外 ...

  2. 将大型 Page Blob 的页范围进行分段

     Windows Azure 存储支持一种 Blob 类型,即 Page Blob.Page Blob 通过仅将已写入但未清除的页存入物理存储, 来有效存储稀疏数据.每页大小为 512 字节.Ge ...

  3. 配置Delphi工具菜单 转

    配置Delphi工具菜单 Delphi工具菜单是可配置的.缺省时,Delphi Tools工具菜单的菜单项为[Database Desktop].[Image Editor].[Package Col ...

  4. HDOJ 1330 Deck(叠木块-物理题啊!贪心算法用到了一点)

    Problem Description A single playing card can be placed on a table, carefully, so that the short edg ...

  5. zookeeper[4] 安装windows zookeeper,及问题处理

    安装步骤: 1.在如下路径下载zookeeper-3.4.7.tar.gz http://mirrors.cnnic.cn/apache/zookeeper/stable/ 2.解压zookeeper ...

  6. 【转】H264视频编码级别说明profile level Encoder

    版权声明:本文为博主原创文章,未经博主允许不得转载. 首先要阐明所谓的AVC其实就是H.264标准,是由ITU-T和ISO/IEC组成的联合视频组(JVT,Joint Video Team)一起开发的 ...

  7. JDBC编程之优化

    1.创建 dbconfig.properties driver=com.mysql.jdbc.Driver dburl=jdbc\:mysql\://localhost\:3306/mytest us ...

  8. SEO_Alexa排名

    1.Alexa排名是评价某一网站访问量的一个指标,对SEO优化没有任何作用,这个数据是可以做假的,考虑Alexa排名纯粹是在浪费时间. 2.Alexa排名是针对已经在浏览器中安装了Alexa Tool ...

  9. JAVA基础1

    阶段0:拟出一个计划 阶段1:要制作什么? 阶段2:如何构建? 阶段3:开始创建 阶段4:校订 阶段5:计划的回报   一.程序运行时,数据保存位置 1.寄存器.这是最快的保存区域,因为它位于和其他所 ...

  10. 使用java连接AD域,验证账号password是否正确

    web项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统.事实上客户就是仅仅要一套账号能够訪问全部的OA.CRM等办公系统. 这就是第三方验证.一般有AD域,Ldap,Radi ...