php QQ第三方登陆SDK程序代码

主要是考虑到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); 

时间: 2024-10-01 04:38:53

php QQ第三方登陆SDK程序代码的相关文章

腾讯QQ邮箱及QQ第三方登陆均崩溃,超一小时仍未恢复

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 大家都知道,腾讯的QQ邮箱及第三方登陆都是中国整个互联网使用量最大的,这都得益于他的强大的用户基础及超高的用户粘度,而今天的故障确时间如此之长,实有失腾讯巨头身份的水准哦! 10:15分左右 刚才经理准备用QQ发邮件,结果,结果企鹅家的QQ邮箱突然就打不开了.我当时还没在意,以为只是特殊情况卡了一下. 10:25分左右 过了十来分钟,一个老乡

qq登陆-Android使用QQ第三方登陆

问题描述 Android使用QQ第三方登陆 又一个需求,就是需要在一个android应用上(类似19楼这样的掌上论坛)使用QQ登陆.19楼的网站上可以使用QQ登陆,手机软件也可以.但是好像腾讯给网站和移动应用提供不同的AppId如果网站上用QQ登陆,就不能再在手机上用QQ登陆了. 简而言之,我要在Android应用上可以使用QQ登陆,但是这个QQ账号曾经在网站上登陆过.换句话说,用户的QQ可以再网站和手机上登陆,现在怎么实现在手机上登陆,不会和网站上冲突?

javaee-java qq一键登陆 的实现代码

问题描述 java qq一键登陆 的实现代码 我想知道qq的一键登陆用java 怎么实现?最好有源码 谢谢! 解决方案 http://www.veryhuo.com/down/html/34312.html

class-做第三方的支付程序 代码需要注意什么 比如 一些风控之类的

问题描述 做第三方的支付程序 代码需要注意什么 比如 一些风控之类的 请问 做第三方的支付程序 代码需要注意什么 比如 一些风控之类的

QQ第三方登陆 登陆成功后回调地址页面自动关闭的问题

问题描述 环境:asp.netmvc5iis8.0示例网站:http://ranwawa.com/Account/Login问题描述:点击QQ登陆,打开QQ登陆界面,登陆QQ,跳转到回调页面,过几秒之后,回调网页自动关闭了以前使用aspx也出现过这种问题,解决办法是在所有页面的head里面引入下面这段JS:<scripttype="text/javascript"src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loade

QQ第三方登陆 (JS版)

问题描述 <spanid="qqLoginBtn"></span><scripttype="text/javascript">QC.Login({btnId:"qqLoginBtn"});</script>上面的代码在火狐浏览器中登录后可以显示QQ头像,昵称,退出的信息,为什么在IE浏览器中登录后去没有显示,而且QC.Login.check()的值为false?请指教啊! 解决方案 解决方案二:怎么

【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】下 ~ Net程序员的福利

上一节我们通过通用封装说了下QQ登录的申请和通用讲解,[开源]简单4步搞定QQ登录,无需什么代码功底[无语言界限]:http://www.cnblogs.com/dunitian/p/5055789.html 这次我们专门为Net程序员准备一个专版(其他方向的看通用封装即可,使用起来很简单) 做个简单的案例:(EF+MVC) 1.先看一下自己的appid 2.前台一系列设置:(图片看不见的话点开看,会放大的) 3.数据库设计(简单版本) 4.Model类 5.后台处理(不同框架处理不一样,这边给

htc qq登陆-关于android 在HTC手机上QQ第三方账号登陆

问题描述 关于android 在HTC手机上QQ第三方账号登陆 在HTC手机上QQ第三方账号登陆时,自己写的登陆页面会被重新启动好几次,大神,请问怎么回事?

app-android APP使用友盟第三方登陆,微信可以登陆,QQ 登陆提示登陆失败,错误码:100044

问题描述 android APP使用友盟第三方登陆,微信可以登陆,QQ 登陆提示登陆失败,错误码:100044 使用友盟的第三方登陆实现微信和QQ登陆app,使用keystore微信可以登陆,QQ提示100044错误 :直接用eclipse运行qq可以登陆,但无法跳转到微信登陆页面: 解决方案 http://bbs.umeng.com/thread-5756-1-1.html