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

首頁 > 開發 > PHP > 正文

QQ登錄 PHP OAuth示例代碼

2024-05-04 23:17:38
字體:
來源:轉載
供稿:網友
根據官方文檔編寫

復制代碼 代碼如下:


<?php
/**
* 申請
* 列表
*/
session_start();
$qq_oauth_config = array(
'oauth_consumer_key'=>'*******',//APP ID
'oauth_consumer_secret'=>'******************',//APP KEY
'oauth_callback'=>"http://www.955.cc/qq.php?action=reg",//這里修改為當前腳本,但是要保留?action=reg
'oauth_request_token_url'=>"http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token",
'oauth_authorize_url'=>'http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize',
'oauth_request_access_token_url'=>'http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token',
'user_info_url' => 'http://openapi.qzone.qq.com/user/get_user_info',
);
$action = isset($_GET['action']) ? $_GET['action'] : '';
$qq = new qq_oauth($qq_oauth_config);
switch($action){
//用戶登錄 Step1:請求臨時token
case 'login':
$token = $qq->oauth_request_token();
$_SESSION['oauth_token_secret'] = $token['oauth_token_secret'];
$qq->authorize($token['oauth_token']);
break;
//Step4:Qzone引導用戶跳轉到第三方應用
case 'reg':
$qq->register_user();
$access_token = $qq->request_access_token();
if($token = $qq->save_access_token($access_token)){
//保存,一般發給用戶cookie,以及用戶入庫
//var_dump($token);
$_SESSION['oauth_token'] = $token['oauth_token'];
$_SESSION['oauth_token_secret'] = $token['oauth_token_secret'];
$_SESSION['openid'] = $token['openid'];
header('Content-Type: text/html; charset=utf-8');
$user_info = json_decode($qq->get_user_info());
if($user_info->ret!=0){
exit("獲取頭像昵稱時發生錯誤".$user_info->msg);
} else {
echo 'QQ昵稱:',$user_info->nickname,
'<img src="',$user_info->figureurl,'" />',
'<img src="',$user_info->figureurl_1,'" />',
'<img src="',$user_info->figureurl_2,'" />';
}
}
break;
default :
}
class qq_oauth{
private $config;
function __construct($config){
$this->config = $config;
}
/**
* 返回配置
* @param string $name
*
*/
function C($name){
return isset($this->config[$name]) ? $this->config[$name] : FALSE;
}
/**
* 構建請求URL
* @param string $url
* @param array $params
* @param string $oauth_token_secret
*
*/
function build_request_uri($url,$params=array(),$oauth_token_secret=''){
$oauth_consumer_key = $this->C('oauth_consumer_key');
$oauth_consumer_secret = $this->C('oauth_consumer_secret');
$params = array_merge(array(
'oauth_version'=>'1.0',
'oauth_signature_method'=>'HMAC-SHA1',
'oauth_timestamp'=>time(),
'oauth_nonce'=>rand(1000,99999999),
'oauth_consumer_key'=>$oauth_consumer_key,
),$params);
$encode_params = $params;
ksort($encode_params);
$oauth_signature = 'GET&'.urlencode($url).'&'.urlencode(http_build_query($encode_params));
$oauth_signature = base64_encode(hash_hmac('sha1',$oauth_signature,$oauth_consumer_secret.'&'.$oauth_token_secret,true));
$params['oauth_signature'] = $oauth_signature;
return $url.'?'.http_build_query($params);
}
/**
* 校驗回調是否返回約定的參數
*/
function check_callback(){
if(isset($_GET['oauth_token']))
if(isset($_GET['openid']))
if(isset($_GET['oauth_signature']))
if(isset($_GET['timestamp']))
if(isset($_GET['oauth_vericode']))
return true;
return false;
}
function get_contents($url){
$curl = curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_URL,$url);
return curl_exec($curl);
}
/**
* Step1:請求臨時token、Step2:生成未授權的臨時token
*/
function oauth_request_token(){
$url = $this->build_request_uri($this->C('oauth_request_token_url'));
$tmp_oauth_token = $this->get_contents($url);
parse_str($tmp_oauth_token);
/*
oauth_token 未授權的臨時token
oauth_token_secret token的密鑰,該密鑰僅限于臨時token
error_code 錯誤碼
*/
if(isset($error_code)) exit($error_code);
return array(
'oauth_token'=>$oauth_token,
'oauth_token_secret'=>$oauth_token_secret
);
}
/**
* Step3:引導用戶到Qzone的登錄頁
* @param string $oauth_token 未授權的臨時token
*/
function authorize($oauth_token){
$str = "HTTP/1.1 302 Found";
header($str);
$url = $this->C('oauth_authorize_url');
$query_strings = http_build_query(array(
'oauth_consumer_key'=>$this->C('oauth_consumer_key'),
'oauth_token'=>$oauth_token,
'oauth_callback'=>$this->C('oauth_callback'),
));
header('Location: '.$url.'?'.$query_strings);
}
/**
* Step4:Qzone引導用戶跳轉到第三方應用
* @return bool 驗證是否有效
*/
function register_user(){
/*
* oauth_token 已授權的臨時token
* openid 騰訊用戶對外的統一ID,該OpenID與用戶QQ號碼一一對應
* oauth_signature 簽名值,方便第三方來驗證openid以及來源的可靠性。
* 使用HMAC-SHA1算法:
* 源串:openid+timestamp(串中間不要添加'+'符號)
* 密鑰:oauth_consumer_secret
* timestamp openid的時間戳
* oauth_vericode 授權驗證碼。
*/
if($this->check_callback()){
//校驗簽名
$signature = base64_encode(hash_hmac('sha1',$_GET['openid'].$_GET['timestamp'],$this->C('oauth_consumer_secret'),true));
if(!emptyempty($_GET['oauth_signature']) && $signature==$_GET['oauth_signature']){
$_SESSION['oauth_token'] = $_GET['oauth_token'];
$_SESSION['oauth_vericode'] = $_GET['oauth_vericode'];
return;
}
}
//校驗未通過
exit('UNKNOW REQUEST');
}
/**
* Step5:請求access token
*/
function request_access_token(){
$url = $this->build_request_uri($this->C('oauth_request_access_token_url'),array(
'oauth_token'=>$_SESSION['oauth_token'],
'oauth_vericode'=>$_SESSION['oauth_vericode']
),$_SESSION['oauth_token_secret']);
return $this->get_contents($url);
}
/**
* Step6:生成access token (保存access token)
*
* 關于access_token
* 目前access_token(及其secret)是長期有效的,和某一個openid對應,目前可以支持線下獲取該openid的信息。
* 當然,用戶有權限在Qzone這邊刪除對第三方的授權,此時該access_token會失效,需要重新走整個流程讓用戶授權。
* 以后會逐步豐富access_token的有效性,長期有效、短期有效、用戶登錄時才有效等。
*/
function save_access_token($access_token_str){
parse_str($access_token_str,$access_token_arr);
if(isset($access_token_arr['error_code'])){
return FALSE;
} else {
return $access_token_arr;
}
}
/**
* 目前騰訊僅開放該API
* 獲取登錄用戶信息,目前可獲取用戶昵稱及頭像信息。
*
*/
function get_user_info(){
$url = $this->build_request_uri($this->C('user_info_url'),array(
'oauth_token'=>$_SESSION['oauth_token'],
'openid'=>$_SESSION['openid'],
),$_SESSION['oauth_token_secret']);
return $this->get_contents($url);
}
}


文件打包下載 qq_php.rar
轉自:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品69久久| 亚洲第一天堂无码专区| 正在播放欧美一区| 国产精品99久久久久久人| 国产精品美女av| 一区二区三区亚洲| 久久免费观看视频| 色yeye香蕉凹凸一区二区av| 国产亚洲精品美女久久久久| 麻豆国产va免费精品高清在线| 97久久伊人激情网| 一区二区三区国产视频| 91在线视频成人| 美女精品久久久| 亚洲成人网在线观看| 狠狠躁夜夜躁人人爽超碰91| 日韩成人av一区| 国产精品视频久久| 精品久久久久久久久国产字幕| 欧美精品18videos性欧| 国产欧美精品一区二区三区-老狼| 26uuu另类亚洲欧美日本老年| 91午夜在线播放| 日韩精品有码在线观看| 色综合天天综合网国产成人网| 在线观看亚洲视频| 亚洲精品在线观看www| www.国产精品一二区| 中文字幕亚洲国产| 国内精品免费午夜毛片| 一区二区三区视频观看| 91精品国产99久久久久久| 久久青草精品视频免费观看| 日韩精品中文字幕有码专区| 精品久久久在线观看| 日韩精品中文字幕久久臀| 亚洲天堂网在线观看| 亚洲一区二区精品| 久久精品一区中文字幕| 国产精品日韩精品| 亚洲精品一二区| 亚洲美女av在线播放| 欧美性xxxx极品hd欧美风情| 欧美日本精品在线| 日本91av在线播放| 亚洲日韩欧美视频| 亚洲男人的天堂在线播放| 国产精品日韩在线| 国产欧美一区二区三区在线| 国产精品美女www爽爽爽视频| 欧洲美女免费图片一区| 日韩一级裸体免费视频| 国产精品com| 午夜精品在线视频| 亚洲丝袜av一区| 欧美大秀在线观看| 国产suv精品一区二区三区88区| 2019日本中文字幕| 国产午夜精品视频| 欧美成人免费观看| 欧美激情一区二区三区久久久| 日韩三级影视基地| 日本高清视频一区| 高清亚洲成在人网站天堂| 成人黄色午夜影院| 中文字幕欧美视频在线| 亚洲深夜福利在线| 亚洲性日韩精品一区二区| 国产欧美日韩视频| 97色伦亚洲国产| 97超级碰碰碰| 中文字幕精品一区二区精品| 久久免费精品日本久久中文字幕| 欧美大片免费观看| 亚洲综合在线中文字幕| 怡红院精品视频| 亚洲色图第三页| 国产精品青青在线观看爽香蕉| 亚洲人成电影网站色www| 国产精品最新在线观看| 成年无码av片在线| 91在线中文字幕| 精品动漫一区二区三区| 久久精品国产电影| 日韩精品一区二区三区第95| 亚洲国产精品va在线观看黑人| 国产精品老牛影院在线观看| 日韩免费观看av| 国产欧美日韩免费看aⅴ视频| 疯狂做受xxxx欧美肥白少妇| 欧美大片大片在线播放| 亚洲精品永久免费精品| 久久亚洲私人国产精品va| 欧美亚洲国产成人精品| 91精品免费久久久久久久久| 清纯唯美日韩制服另类| 国产成人精品久久二区二区| 亚洲欧美制服中文字幕| 欧美大片在线看免费观看| 免费91麻豆精品国产自产在线观看| 国产亚洲精品一区二555| 亚洲欧美日韩国产中文| 久久久久久久久中文字幕| 国产精品爽黄69| 亚洲一区二区三区四区在线播放| 性色av一区二区咪爱| 国产精品69久久久久| 久久精品久久久久久国产 免费| 91精品国产91久久久久福利| 欧美日本中文字幕| 亚洲国产欧美精品| 在线成人激情黄色| 国产成人综合av| 成人精品久久av网站| 日日噜噜噜夜夜爽亚洲精品| 美女av一区二区| 欧美在线视频在线播放完整版免费观看| 国产97免费视| 亚洲黄色成人网| 欧美高跟鞋交xxxxhd| 亚洲欧美国产制服动漫| 欧美国产日韩在线| 欧美大尺度电影在线观看| 成人精品久久久| 久久精品青青大伊人av| 国产精品国产自产拍高清av水多| 成人网址在线观看| 国产成人精品视| 欧美三级xxx| 成人羞羞国产免费| 在线观看日韩视频| 欧美一区二区三区……| 免费97视频在线精品国自产拍| www.xxxx精品| 亚洲精品第一国产综合精品| 中文字幕久久精品| 久久精品在线视频| 国产一区二区三区日韩欧美| 欧美日韩国产一区在线| 久久成人精品电影| 日韩精品在线电影| 久久久久中文字幕2018| 国产精品久久久久秋霞鲁丝| 亚洲精品国产综合区久久久久久久| 久久91精品国产91久久跳| 亚洲影视九九影院在线观看| 日韩成人av网| 国产亚洲美女久久| 久久91亚洲精品中文字幕奶水| 伊人久久五月天| www国产亚洲精品久久网站| 久久久久久这里只有精品| 欧美综合在线第二页| 日韩中文视频免费在线观看| 国产一区二区三区中文| 欧美一区二区大胆人体摄影专业网站| 国产成人精品午夜| 亚洲国产精品网站| 91精品91久久久久久| 国产精品∨欧美精品v日韩精品| 亚洲精品福利免费在线观看| 色综合亚洲精品激情狠狠| 夜夜嗨av色综合久久久综合网| 亚洲欧美激情一区|