国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

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

2024-05-04 21:48:31
字體:
來源:轉載
供稿:網友

自己重寫的一個php QQ第三方登陸SDK程序代碼,官方的不敢恭維了所以自己再寫了一個,主要是考慮到QQ的PHP SDK寫的真是太爛了,純屬是普及API知識,而不是到手就可以部署的類庫,反正自己都寫了一個了,就拿出來分享下.

什么也不多說,直接上代碼,代碼如下:

  1. <?php 
  2.  
  3. /** 
  4.  
  5. * QQ開發平臺 SDK 
  6.  
  7. * 作者:偶爾陶醉 
  8.  
  9. * blog: m.survivalescaperooms.com 
  10.  
  11. */  
  12.  
  13. class Qq_sdk{  
  14.  
  15.  
  16.  
  17. //配置APP參數 
  18.  
  19. private $app_id = 你的APP ID;  
  20.  
  21. private $app_secret = ‘你的APP_secret’;  
  22.  
  23. private $redirect = 你的回調地址; 
  24.  
  25.  
  26.  
  27. function __construct()  
  28.  
  29. {  
  30.  
  31.  
  32.  
  33. }  
  34.  
  35.  
  36.  
  37. /** 
  38.  
  39. * [get_access_token 獲取access_token] 
  40.  
  41. * @param [string] $code [登陸后返回的$_GET['code']] 
  42.  
  43. * @return [array] [expires_in 為有效時間 , access_token 為授權碼 ; 失敗返回 error , error_description ] 
  44.  
  45. */  
  46.  
  47. function get_access_token($code)  
  48.  
  49. {  
  50.  
  51. //獲取access_token 
  52.  
  53. $token_url = ‘https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&’ 
  54.  
  55. . ‘client_id=’ . $this->app_id . ‘&redirect_uri=’ . urlencode($this->redirect)//回調地址 
  56.  
  57. . ‘&client_secret=’ . $this->app_secret . ‘&code=’ . $code;  
  58.  
  59. $token = array();  
  60.  
  61. //expires_in 為access_token 有效時間增量  
  62.  
  63. parse_str($this->_curl_get_content($token_url), $token);  
  64.  
  65.  
  66.  
  67. return $token;  
  68.  
  69. }  
  70.  
  71.  
  72.  
  73. /** 
  74.  
  75. * [get_open_id 獲取用戶唯一ID,openid] 
  76.  
  77. * @param [string] $token [授權碼] 
  78.  
  79. * @return [array] [成功返回client_id 和 openid ;失敗返回error 和 error_msg] 
  80.  
  81. */  
  82.  
  83. function get_open_id($token)  
  84.  
  85. {  
  86.  
  87. $str = $this->_curl_get_content(‘https://graph.qq.com/oauth2.0/me?access_token=’ . $token); 
  88.  
  89. if (strpos($str, “callback”) !== false)  
  90.  
  91. {  
  92.  
  93. $lpos = strpos($str, “(“);  
  94.  
  95. $rpos = strrpos($str, “)”);  
  96.  
  97. $str = substr($str$lpos + 1, $rpos – $lpos -1);  
  98.  
  99. }  
  100.  
  101. $user = json_decode($str, TRUE);  
  102.  
  103.  
  104.  
  105. return $user;  
  106.  
  107. }  
  108.  
  109.  
  110.  
  111. /** 
  112.  
  113. * [get_user_info 獲取用戶信息] 
  114.  
  115. * @param [string] $token [授權碼] 
  116.  
  117. * @param [string] $open_id [用戶唯一ID] 
  118.  
  119. * @return [array] [ret:返回碼,為0時成功。msg為錯誤信息,正確返回時為空。...params] 
  120.  
  121. */  
  122.  
  123. function get_user_info($token$open_id)  
  124.  
  125. {  
  126.  
  127.  
  128.  
  129. //組裝URL 
  130.  
  131. $user_info_url = ‘https://graph.qq.com/user/get_use 
  132. r_info?’ 
  133.  
  134. . ‘access_token=’ . $token  
  135.  
  136. . ‘&oauth_consumer_key=’ . $this->app_id  
  137.  
  138. . ‘&openid=’ . $open_id  
  139.  
  140. . ‘&format=json’;  
  141.  
  142.  
  143.  
  144. $info = json_decode($this->_curl_get_content($user_info_url), TRUE);  
  145.  
  146.  
  147.  
  148. return $info;  
  149.  
  150. }  
  151.  
  152. private function _curl_get_content($url)  
  153.  
  154. {  
  155.  
  156. $ch = curl_init();  
  157.  
  158. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  
  159.  
  160. curl_setopt($ch, CURLOPT_URL, $url);  
  161.  
  162. //設置超時時間為3s 
  163. //開源代碼Vevb.com 
  164. curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3);  
  165.  
  166. $result = curl_exec($ch);  
  167.  
  168. curl_close($ch);  
  169. return $result;  
  170. /* end of Qq_sdk.php */  
  171. ?> 

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

在回調地址上調用我上面這個qq_sdk即可.

demo代碼如下:

  1. if(emptyempty($_GET['code']))
  2. {
  3. exit(‘參數非法’);
  4. }  
  5. include(‘qq_sdk’);  
  6.  
  7. $qq_sdk = new Qq_sdk();  
  8.  
  9. $token = $qq_sdk->get_access_token($_GET['code']);  
  10.  
  11. print_r($token);  
  12. $open_id = $qq_sdk->get_open_id($token['access_token']);  
  13.  
  14. print_r($open_id);   
  15.  
  16. $user_info = $qq_sdk->get_user_info($token['access_token'], $open_id['openid']);  
  17.  
  18. print_r($user_info); 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柯坪县| 临夏县| 内乡县| 芜湖县| 延津县| 江油市| 周宁县| 睢宁县| 丰原市| 永春县| 博兴县| 清河县| 蒙山县| 龙川县| 临汾市| 辉南县| 濮阳市| 鹤峰县| 乌审旗| 南木林县| 麻栗坡县| 上蔡县| 榆社县| 永顺县| 上蔡县| 灵寿县| 定边县| 瑞昌市| 申扎县| 滦南县| 阳江市| 临江市| 上杭县| 连州市| 禄劝| 邹城市| 南木林县| 固阳县| 杨浦区| 吴堡县| 南江县|