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

首頁 > 網站 > 建站經驗 > 正文

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

2024-04-25 20:38:26
字體:
來源:轉載
供稿:網友

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

/**

* QQ互聯 oauth

* @author dyllen

*

*/

class Oauth

{

//取Authorization Code Url

const PC_CODE_URL = 'https://graph.qq.com/oauth2.0/authorize';

//取Access Token Url

const PC_ACCESS_TOKEN_URL = 'https://graph.qq.com/oauth2.0/token';

//取用戶 Open Id Url

const OPEN_ID_URL = 'https://graph.qq.com/oauth2.0/me';

//用戶授權之后的回調地址

public $redirectUri = null;

// App Id

public $appid = null;

//App Key

public $appKey = null;

//授權列表

//字符串,多個用逗號隔開

public $scope = null;

//授權code

public $code = null;

//續期access token的憑證

public $refreshToken = null;

//access token

public $accessToken = null;

//access token 有效期,單位秒

public $expiresIn = null;

//state

public $state = null;

public $openid = null;

//construct

public function __construct($config=[])

{

foreach($config as $key => $value) {

$this->$key = $value;

}

}

/**

* 得到獲取Code的url

* @throws /InvalidArgumentException

* @return string

*/

public function codeUrl()

{

if (!$this->redirectUri) {

throw new /Exception('parameter $redirectUri must be set.');

}

$query = [

'response_type' => 'code',

'client_id' => $this->appid,

'redirect_uri' => $this->redirectUri,

'state' => $this->getState(),

'scope' => $this->scope,

];

return self::PC_CODE_URL . '?' . http_build_query($query);

}

/**

* 取access token

* @throws Exception

* @return boolean

*/

public function getAccessToken()

{

$params = [

'grant_type' => 'authorization_code',

'client_id' => $this->appid,

'client_secret' => $this->appKey,

'code' => $this->code,

'redirect_uri' => $this->redirectUri,

];

$url = self::PC_ACCESS_TOKEN_URL . '?' . http_build_query($params);

$content = $this->getUrl($url);

parse_str($content, $res);

if ( !isset($res['access_token']) ) {

$this->thrwoError($content);

}

$this->accessToken = $res['access_token'];

$this->expiresIn = $res['expires_in'];

$this->refreshToken = $res['refresh_token'];

return true;

}

/**

* 刷新access token

* @throws Exception

* @return boolean

*/

public function refreshToken()

{

$params = [

'grant_type' => 'refresh_token',

'client_id' => $this->appid,

'client_secret' => $this->appKey,

'refresh_token' => $this->refreshToken,

];

$url = self::PC_ACCESS_TOKEN_URL . '?' . http_build_query($params);

$content = $this->getUrl($url);

parse_str($content, $res);

if ( !isset($res['access_token']) ) {

$this->thrwoError($content);

}

$this->accessToken = $res['access_token'];

$this->expiresIn = $res['expires_in'];

$this->refreshToken = $res['refresh_token'];

return true;

}

/**

* 取用戶open id

* @return string

*/

public function getOpenid()

{

$params = [

'access_token' => $this->accessToken,

];

$url = self::OPEN_ID_URL . '?' . http_build_query($params);

$this->openid = $this->parseOpenid( $this->getUrl($url) );

return $this->openid;

}

/**

* get方式取url內容

* @param string $url

* @return mixed

*/

public function getUrl($url)

{

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_URL, $url);

$response = curl_exec($ch);

curl_close($ch);

return $response;

}

/**

* post方式取url內容

* @param string $url

* @param array $keysArr

* @param number $flag

* @return mixed

*/

public function postUrl($url, $keysArr, $flag = 0)

{

$ch = curl_init();

if(! $flag) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_POSTFIELDS, $keysArr);

curl_setopt($ch, CURLOPT_URL, $url);

$ret = curl_exec($ch);

curl_close($ch);

return $ret;

}

/**

* 取state

* @return string

*/

protected function getState()

{

$this->state = md5(uniqid(rand(), true));

//state暫存在緩存里面

//自己定義

//。。。。。。。。。

return $this->state;

}

/**

* 驗證state

* @return boolean

*/

protected function verifyState()

{

//。。。。。。。

}

/**

* 拋出異常

* @param string $error

* @throws /Exception

*/

protected function thrwoError($error)

{

$subError = substr($error, strpos($error, "{"));

$subError = strstr($subError, "}", true) . "}";

$error = json_decode($subError, true);

throw new /Exception($error['error_description'], (int)$error['error']);

}

/**

* 從獲取openid接口的返回數據中解析出openid

* @param string $str

* @return string

*/

protected function parseOpenid($str)

{

$subStr = substr($str, strpos($str, "{"));

$subStr = strstr($subStr, "}", true) . "}";

$strArr = json_decode($subStr, true);

if(!isset($strArr['openid'])) {

$this->thrwoError($str);

}

return $strArr['openid'];

}

}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级高清免费| 亚洲欧美中文日韩在线v日本| 亚洲欧美日韩一区二区在线| 欧美大片大片在线播放| 亚洲视频电影图片偷拍一区| 日韩69视频在线观看| 国产精品h片在线播放| 欧美多人爱爱视频网站| 九九热这里只有精品6| 国内精品美女av在线播放| 久热国产精品视频| 伦理中文字幕亚洲| 欧美亚洲在线播放| 欧美伦理91i| 美女扒开尿口让男人操亚洲视频网站| 一区二区三区四区在线观看视频| 国产成人在线播放| 久久久91精品国产| 亚洲一区二区免费| 岛国视频午夜一区免费在线观看| 日本精品性网站在线观看| 久久久久久一区二区三区| 欧美激情一级二级| 国产成人自拍视频在线观看| 日韩在线观看视频免费| 日韩中文字幕在线精品| 久久久久久久亚洲精品| 日韩精品极品视频免费观看| 久久亚洲精品毛片| 日韩欧美中文免费| 精品毛片三在线观看| 成人激情免费在线| 一区二区三区动漫| 91久久精品在线| 午夜免费久久久久| 日韩精品久久久久| 国产成人精品免高潮费视频| 亚洲色图第一页| 在线观看精品国产视频| 91大神在线播放精品| 久久精彩免费视频| 色婷婷成人综合| 久久99久久99精品免观看粉嫩| 亚洲国产精品va在线看黑人动漫| 国产ts人妖一区二区三区| 亚洲精品一区中文| 久久久久久久久久亚洲| 成人在线视频福利| 国产精品偷伦一区二区| 成人久久久久久久| 欧美在线不卡区| 欧美性在线观看| 日韩视频免费在线| 91在线视频导航| 亚洲一区二区三区sesese| 国产精品美女主播| 日韩电影免费在线观看| 国产精品丝袜久久久久久高清| 青草热久免费精品视频| 精品国产视频在线| 国产日本欧美一区二区三区在线| 992tv成人免费影院| 亚洲欧美激情另类校园| 亚洲欧美国产日韩中文字幕| 国产精品网红直播| 日韩av免费在线观看| 国产精品96久久久久久又黄又硬| 欧美激情在线观看视频| 欧美精品免费播放| 一个人看的www久久| 国产精品自产拍高潮在线观看| 91精品视频大全| 亚洲精品电影在线| 亚洲影视九九影院在线观看| 久久精品99久久香蕉国产色戒| 亚洲人a成www在线影院| 97久久国产精品| 欧美综合国产精品久久丁香| 在线看国产精品| 国产成人精品在线播放| 成人黄色短视频在线观看| 欧日韩在线观看| 中文字幕欧美日韩精品| 欧美日韩国产一中文字不卡| 亚洲一二三在线| 欧美影院成年免费版| 一区二区三区无码高清视频| 色999日韩欧美国产| 日韩精品在线视频| 97久久超碰福利国产精品…| 26uuu另类亚洲欧美日本一| 一本色道久久综合亚洲精品小说| 国产亚洲精品久久久久久| 色青青草原桃花久久综合| 精品一区二区三区电影| 国产精品色悠悠| 色777狠狠综合秋免鲁丝| 91精品美女在线| 性欧美在线看片a免费观看| 国产亚洲成av人片在线观看桃| 色综合伊人色综合网站| 亚洲第一天堂无码专区| 亚洲人精选亚洲人成在线| 久久在线免费观看视频| 日韩欧美精品网站| 欧美日韩激情网| 精品久久久香蕉免费精品视频| 国产精品香蕉国产| 精品爽片免费看久久| 精品无码久久久久久国产| 欧美日韩性生活视频| 成人激情综合网| 欧美一区二区大胆人体摄影专业网站| 色狠狠久久aa北条麻妃| 亚洲色图五月天| 粉嫩av一区二区三区免费野| 91久热免费在线视频| 亚洲第一男人av| 精品网站999www| 日韩av色综合| 成人午夜在线观看| 亚洲电影av在线| 国产亚洲精品美女| 91系列在线播放| 久久在线观看视频| 亚洲成色www8888| 日韩精品视频在线免费观看| 91精品综合视频| 亚洲欧美日韩国产中文专区| 久久精品福利视频| 97香蕉久久夜色精品国产| 欧美激情久久久久久| 欧美电影免费看| 亚洲国产小视频| 久久亚洲私人国产精品va| 精品亚洲夜色av98在线观看| 欧美刺激性大交免费视频| 中文字幕欧美亚洲| 成人a免费视频| 久久久亚洲国产| 日韩精品免费观看| 日韩精品中文字| 亚洲天堂男人天堂| 欧美成人自拍视频| 国产精品久久久久久久天堂| 夜色77av精品影院| 久久久久久久久久久国产| 国产成人精品电影| 3344国产精品免费看| 色妞色视频一区二区三区四区| 亚洲精品影视在线观看| 中文字幕少妇一区二区三区| 中文字幕欧美日韩精品| 国产成人精彩在线视频九色| 欧美一区二粉嫩精品国产一线天| 自拍偷拍亚洲一区| 欧美国产日本高清在线| 色噜噜久久综合伊人一本| 欧美亚州一区二区三区| 精品电影在线观看| 97在线免费观看视频| 日韩视频中文字幕| 久久久免费观看| 91视频免费网站|