ホームページ php教程 php手册 QQ ログイン PHP OAuth サンプル コード

QQ ログイン PHP OAuth サンプル コード

Jun 13, 2016 pm 12:07 PM
http oauth php コード コピー 正式 書類 適用する ログイン 書く

公式ドキュメントに従って記述

コードをコピー コードは次のとおりです:


/**
* 適用 http://connect.opensns.qq.com/apply
* リスト http://connect.opensns.qq.com/my
*/
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['アクション'] : '';
$qq = 新しい qq_oauth($qq_oauth_config);
switch($action){
//用户登录 ステップ 1:请要求時トークン
case 'login':
$token = $qq->oauth_request_token();
$_SESSION['oauth_token_secret'] = $token['oauth_token_secret'];
$qq->authorize($token['oauth_token']);
休憩;
//ステップ 4: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->ニックネーム,
'',
'',
'' ;
}
}
休憩;
デフォルト :
}
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' ]))
true を返します。
false を返します。
}
function get_contents($url){
$curl =curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_URL,$url);
returncurl_exec($curl);
}
/**
* ステップ 1: 一時トークンを要求、ステップ 2: 未承認の一時トークンを生成
*/
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 未許可の一時トークン
oauth_token_secret トークンの秘密、この秘密は一時トークンに限定されます
error_code 错误码
*/
if(isset($error_code )) exit($error_code);
return array(
'oauth_token'=>$oauth_token,
'oauth_token_secret'=>$oauth_token_secret
);
}
/**
* ステップ 3: ユーザーを Qzone ログイン ページに案内します
* @param string $oauth_token 不正な一時トークン
*/
function authorize($oauth_token){
$str = "HTTP/1.1 302 が見つかりました"
header($str); $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);
}
/**
* ステップ 4: Qzone は、ユーザーがサードパーティのアプリケーションにジャンプするようにガイドします
* @return bool 有効かどうかを確認します
*/
function register_user(){
/*
* oauth_token 承認された一時トークン
* openid Tencent ユーザーの外部統一 ID、 OpenID はユーザーの QQ 番号
* oauth_signature 署名値と 1 対 1 に対応しており、これにより第三者が openid とソースの信頼性を検証することが容易になります。
* HMAC-SHA1 アルゴリズムを使用します:
* ソース文字列: openid タイムスタンプ (文字列の途中に「 」記号を追加しないでください)
* キー: oauth_consumer_secret
* タイムスタンプ openid タイムスタンプ
* oauth_vericode 認証確認コード。
*/
if($this->check_callback()){
//署名を検証
$signature =base64_encode(hash_hmac('sha1',$_GET['openid']. $ _GET['タイムスタンプ'],$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')
}
/**
* ステップ 5: アクセス トークンをリクエスト
*/
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);
/**
* ステップ 6: アクセス トークンの生成 (アクセス トークンの保存)
*
* access_token について
* 現在、access_token (およびそのシークレット) は長期間有効であり、特定の openid に対応できます。現在オンラインでサポートされています。 以下の openid 情報を取得します。
* もちろん、ユーザーは Qzone 上で第三者への認可を削除する権限を持っています。このとき、access_token は無効になり、プロセス全体がユーザーによって再認可される必要があります。
* 今後、access_token の有効期限は長期有効、短期有効、ユーザーログイン時のみ有効など徐々に充実していきます。
*/
関数 save_access_token($access_token_str){
parse_str($access_token_str,$access_token_arr);
if(isset($access_token_arr['error_code'])){
return
} else {
return $access_token_arr;
}
}
/**
* 現在、Tencent はこの API のみを公開しています。
* ログインしているユーザー情報の取得 現在、ユーザーのニックネームとアバター情報を取得できます。
* http://openapi.qzone.qq.com/user/get_user_info
*/
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
転載元: http://dev.meettea.com

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles