亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP版QQ互聯OAuth示例代碼分享

2024-05-04 23:37:19
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP版QQ互聯OAuth示例代碼分享,十分的詳細使用,有需要的小伙伴可以參考下。

由于國內QQ用戶的普遍性,所以現在各大網站都盡可能的提供QQ登陸口,下面我們來看看php版,給大家參考下

  1. /** 
  2. * QQ互聯 oauth 
  3. * @author dyllen 
  4. * 
  5. */ 
  6. class Oauth 
  7. //取Authorization Code Url 
  8. const PC_CODE_URL = 'https://graph.qq.com/oauth2.0/authorize'
  9.  
  10. //取Access Token Url 
  11. const PC_ACCESS_TOKEN_URL = 'https://graph.qq.com/oauth2.0/token'
  12.  
  13. //取用戶 Open Id Url 
  14. const OPEN_ID_URL = 'https://graph.qq.com/oauth2.0/me'
  15.  
  16. //用戶授權之后的回調地址 
  17. public $redirectUri = null; 
  18.  
  19. // App Id 
  20. public $appid = null; 
  21.  
  22. //App Key 
  23. public $appKey = null; 
  24.  
  25. //授權列表 
  26. //字符串,多個用逗號隔開 
  27. public $scope = null; 
  28.  
  29. //授權code 
  30. public $code = null; 
  31.  
  32. //續期access token的憑證 
  33. public $refreshToken = null; 
  34.  
  35. //access token 
  36. public $accessToken = null; 
  37.  
  38. //access token 有效期,單位秒 
  39. public $expiresIn = null; 
  40.  
  41. //state 
  42. public $state = null; 
  43.  
  44. public $openid = null; 
  45.  
  46. //construct 
  47. public function __construct($config=[]) 
  48. foreach($config as $key => $value) { 
  49. $this->$key = $value
  50.  
  51. /** 
  52. * 得到獲取Code的url 
  53. * @throws /InvalidArgumentException 
  54. * @return string 
  55. */ 
  56. public function codeUrl() 
  57. if (!$this->redirectUri) { 
  58. throw new /Exception('parameter $redirectUri must be set.'); 
  59. $query = [ 
  60. 'response_type' => 'code'
  61. 'client_id' => $this->appid, 
  62. 'redirect_uri' => $this->redirectUri, 
  63. 'state' => $this->getState(), 
  64. 'scope' => $this->scope, 
  65. ]; 
  66.  
  67. return self::PC_CODE_URL . '?' . http_build_query($query); 
  68.  
  69. /** 
  70. * 取access token 
  71. * @throws Exception 
  72. * @return boolean 
  73. */ 
  74. public function getAccessToken() 
  75. $params = [ 
  76. 'grant_type' => 'authorization_code'
  77. 'client_id' => $this->appid, 
  78. 'client_secret' => $this->appKey, 
  79. 'code' => $this->code, 
  80. 'redirect_uri' => $this->redirectUri, 
  81. ]; 
  82.  
  83. $url = self::PC_ACCESS_TOKEN_URL . '?' . http_build_query($params); 
  84. $content = $this->getUrl($url); 
  85. parse_str($content$res); 
  86. if ( !isset($res['access_token']) ) { 
  87. $this->thrwoError($content); 
  88.  
  89. $this->accessToken = $res['access_token']; 
  90. $this->expiresIn = $res['expires_in']; 
  91. $this->refreshToken = $res['refresh_token']; 
  92.  
  93. return true; 
  94.  
  95. /** 
  96. * 刷新access token 
  97. * @throws Exception 
  98. * @return boolean 
  99. */ 
  100. public function refreshToken() 
  101. $params = [ 
  102. 'grant_type' => 'refresh_token'
  103. 'client_id' => $this->appid, 
  104. 'client_secret' => $this->appKey, 
  105. 'refresh_token' => $this->refreshToken, 
  106. ]; 
  107.  
  108. $url = self::PC_ACCESS_TOKEN_URL . '?' . http_build_query($params); 
  109. $content = $this->getUrl($url); 
  110. parse_str($content$res); 
  111. if ( !isset($res['access_token']) ) { 
  112. $this->thrwoError($content); 
  113.  
  114. $this->accessToken = $res['access_token']; 
  115. $this->expiresIn = $res['expires_in']; 
  116. $this->refreshToken = $res['refresh_token']; 
  117.  
  118. return true; 
  119.  
  120. /** 
  121. * 取用戶open id 
  122. * @return string 
  123. */ 
  124. public function getOpenid() 
  125. $params = [ 
  126. 'access_token' => $this->accessToken, 
  127. ]; 
  128.  
  129. $url = self::OPEN_ID_URL . '?' . http_build_query($params); 
  130.  
  131. $this->openid = $this->parseOpenid( $this->getUrl($url) ); 
  132.  
  133. return $this->openid; 
  134.  
  135. /** 
  136. * get方式取url內容 
  137. * @param string $url 
  138. * @return mixed 
  139. */ 
  140. public function getUrl($url
  141. $ch = curl_init(); 
  142. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  143. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
  144. curl_setopt($ch, CURLOPT_URL, $url); 
  145. $response = curl_exec($ch); 
  146. curl_close($ch); 
  147.  
  148. return $response
  149.  
  150. /** 
  151. * post方式取url內容 
  152. * @param string $url 
  153. * @param array $keysArr 
  154. * @param number $flag 
  155. * @return mixed 
  156. */ 
  157. public function postUrl($url$keysArr$flag = 0) 
  158. $ch = curl_init(); 
  159. if(! $flag) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  160. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
  161. curl_setopt($ch, CURLOPT_POST, TRUE); 
  162. curl_setopt($ch, CURLOPT_POSTFIELDS, $keysArr); 
  163. curl_setopt($ch, CURLOPT_URL, $url); 
  164. $ret = curl_exec($ch); 
  165.  
  166. curl_close($ch); 
  167. return $ret
  168.  
  169.  
  170. /** 
  171. * 取state 
  172. * @return string 
  173. */ 
  174. protected function getState() 
  175. $this->state = md5(uniqid(rand(), true)); 
  176. //state暫存在緩存里面 
  177. //自己定義 
  178. //。。。。。。。。。 
  179.  
  180. return $this->state; 
  181.  
  182. /** 
  183. * 驗證state 
  184. * @return boolean 
  185. */ 
  186. protected function verifyState() 
  187. //。。。。。。。 
  188.  
  189. /** 
  190. * 拋出異常 
  191. * @param string $error 
  192. * @throws /Exception 
  193. */ 
  194. protected function thrwoError($error
  195. $subError = substr($errorstrpos($error"{")); 
  196. $subError = strstr($subError"}", true) . "}"
  197. $error = json_decode($subError, true); 
  198.  
  199. throw new /Exception($error['error_description'], (int)$error['error']); 
  200.  
  201. /** 
  202. * 從獲取openid接口的返回數據中解析出openid 
  203. * @param string $str 
  204. * @return string 
  205. */ 
  206. protected function parseOpenid($str
  207. $subStr = substr($strstrpos($str"{")); 
  208. $subStr = strstr($subStr"}", true) . "}"
  209. $strArr = json_decode($subStr, true); 
  210. if(!isset($strArr['openid'])) { 
  211. $this->thrwoError($str); 
  212.  
  213. return $strArr['openid']; 


以上所述就是本文的全部內容了,希望大家能夠喜歡。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
人人爽久久涩噜噜噜网站| 色综合五月天导航| 日韩综合视频在线观看| 日韩最新av在线| 国产福利视频一区二区| 国产精品美女网站| 91视频国产高清| 黄色成人在线免费| 欧美国产日韩一区二区| 亚洲国产三级网| 国产主播喷水一区二区| 国产精品男人的天堂| 亚洲一品av免费观看| 97高清免费视频| 91成人在线观看国产| 欧美在线精品免播放器视频| 欧美中文字幕在线观看| 亚洲欧美一区二区精品久久久| 成人中文字幕+乱码+中文字幕| 日韩福利伦理影院免费| 日韩极品精品视频免费观看| 26uuu国产精品视频| 亚洲综合色激情五月| 北条麻妃久久精品| 欧美做受高潮电影o| 久久久精品国产亚洲| 国产福利精品在线| 成人黄色在线播放| 黑人精品xxx一区| 日av在线播放中文不卡| 九九九热精品免费视频观看网站| 欧美大片欧美激情性色a∨久久| 国产精品你懂得| 亚洲xxx视频| 高清日韩电视剧大全免费播放在线观看| 最近2019中文字幕mv免费看| 久久伊人色综合| 日本伊人精品一区二区三区介绍| 最近2019中文字幕在线高清| 国产日韩欧美日韩大片| 在线播放日韩av| 91精品久久久久久综合乱菊| 久久久久亚洲精品| 国产精品视频免费观看www| 国产精品普通话| 精品国内自产拍在线观看| 国产欧美日韩专区发布| 在线播放国产一区中文字幕剧情欧美| 国产91色在线|| 亚洲美腿欧美激情另类| 亚洲第一福利视频| 亚洲国产精品久久久久久| 欧洲一区二区视频| 亚洲美女精品久久| 亚洲精品一区中文字幕乱码| 成人午夜在线影院| 日本成人激情视频| 精品欧美国产一区二区三区| 亚洲国产欧美一区二区三区同亚洲| 91精品久久久久久久久不口人| 中文字幕日韩av| 久久噜噜噜精品国产亚洲综合| 精品国产一区二区三区在线观看| 日本午夜精品理论片a级appf发布| 日韩精品免费电影| 色综合久久88色综合天天看泰| 国产精品爱啪在线线免费观看| 欧美高清在线视频观看不卡| 黄色一区二区三区| 欧美电影免费观看高清完整| 久久琪琪电影院| 亚洲成年人在线| 91福利视频在线观看| 欧美日本啪啪无遮挡网站| 欧美精品久久久久久久久久| **欧美日韩vr在线| 日韩欧美亚洲范冰冰与中字| 亚洲精品二三区| 在线精品国产欧美| 精品久久久久久中文字幕| www日韩欧美| 国产在线拍偷自揄拍精品| 国产精品普通话| 欧美午夜美女看片| 亚洲成人网在线| 久久好看免费视频| 欧美黑人国产人伦爽爽爽| 中文字幕欧美日韩精品| 狠狠色噜噜狠狠狠狠97| 欧美大胆在线视频| 国产成+人+综合+亚洲欧美丁香花| 亚洲性夜色噜噜噜7777| 久久精品视频导航| 精品日韩中文字幕| 91情侣偷在线精品国产| 57pao精品| 亚洲国产成人91精品| 日韩大胆人体377p| 成人综合网网址| 欧洲中文字幕国产精品| 91精品久久久久久久久青青| 成人免费视频xnxx.com| 亚洲天堂第一页| 中文字幕亚洲一区在线观看| 欧美大尺度激情区在线播放| 国产精品成人在线| 性欧美长视频免费观看不卡| 4438全国成人免费| 亚洲电影免费观看高清| 国产日产久久高清欧美一区| 精品久久久久久久久中文字幕| 精品久久久久久电影| 揄拍成人国产精品视频| 美日韩精品免费观看视频| 992tv成人免费影院| 91精品国产自产91精品| 欧美激情videos| 久久久久久国产| 91av在线播放| 国产成人精品久久| 亚洲电影免费观看高清完整版在线观看| 中文字幕日韩av| 亚洲japanese制服美女| 在线一区二区日韩| 成人午夜激情网| 色诱女教师一区二区三区| 久久久亚洲影院你懂的| 最新91在线视频| 中文字幕一区日韩电影| 国产精品毛片a∨一区二区三区|国| 成人午夜在线影院| 热久久视久久精品18亚洲精品| 欧美华人在线视频| 国产精品精品视频一区二区三区| 国产精品久久久久久久久影视| 国产精品丝袜久久久久久高清| 亚洲欧美日韩天堂一区二区| 国产精品91免费在线| 国产一区二区av| 国产精品美女主播在线观看纯欲| 97久久久免费福利网址| 亚洲精品一区二区久| 日韩精品免费在线播放| 亚洲高清久久网| 欧美一级视频免费在线观看| 亚洲第一色中文字幕| 91sa在线看| 国产精品揄拍500视频| 国产精品小说在线| x99av成人免费| 在线看福利67194| 亚洲成人激情在线观看| 亚洲美女喷白浆| 日韩精品在线观看网站| 在线观看日韩专区| 成人在线精品视频| 亚洲国产日韩一区| 亚洲成人精品视频| 亚洲肉体裸体xxxx137| 97久久精品人搡人人玩| 久热精品在线视频| 日本精品久久中文字幕佐佐木| 91国产视频在线| 97碰在线观看|