程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php QQ第三方登陸SDK程序代碼

php QQ第三方登陸SDK程序代碼

編輯:關於PHP編程

自己重寫的一個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); 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved