php QQ第三方登陆SDK程序代码
自己重写的一个php QQ第三方登陆SDK程序代码,官方的不敢恭维了所以自己再写了一个
主要是考虑到QQ的PHP SDK写的真是太烂了,纯属是普及API知识,而不是到手就可以部署的类库。。反正自己都写了一个了,就拿出来分享下。。
什么也不多说,直接上代码。
Qq_sdk.php
<?php
/**
* QQ开发平台 SDK
* 作者:偶尔陶醉
* blog: www.stutostu.com
*/
class Qq_sdk {
//配置APP参数
private $app_id = '你的APPID';
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_user_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如下:
<?php
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);
?>教程地址:http://www.phprm.com/frame/php1005386.html
欢迎转载!但请带上文章地址^^