Skip to content

Instantly share code, notes, and snippets.

@noriyukitakei
Created April 3, 2018 00:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noriyukitakei/987298d21526dd7c9f4f0d8ae60bca69 to your computer and use it in GitHub Desktop.
Save noriyukitakei/987298d21526dd7c9f4f0d8ae60bca69 to your computer and use it in GitHub Desktop.
認可画面表示及び認可コード発行処理
<?php
// データベースの接続情報などを定義している共通処理をrequireします。
require_once __DIR__.'/server.php';
// セッションを開始します。
session_start();
// usernameというセッション変数に何もセットされていなかったら、
// すなわち未認証だったら、ログイン画面にリダイレクトします。
if (!isset($_SESSION['username'])) {
// ログイン画面にリダイレクトする前に、ログイン後に
// 戻る画面の戻り先のURL(つまり本画面のURL)をセッションに格納します。
$_SESSION['back'] = $_SERVER["REQUEST_URI"];
header('Location: /login.php');
exit;
}
// リクエスト、レスポンスのオブジェクトを生成します。
$request = OAuth2\Request::createFromGlobals();
$response = new OAuth2\Response();
// 認可コードのリクエストの際に付与するクエリパラメーター(response_type=code&client_id=twitter&state=xyz)が
// 正しいかどうかをチェックします。
if (!$server->validateAuthorizeRequest($request, $response)) {
$response->send();
die;
}
// POSTされていない、すなわち認可画面にて、yesもしくはnoボタンを押されていなかったら認可画面を表示します。
if (empty($_POST)) {
exit('
<form method="post">
<label>OAuth連携を開始してもよいですか?</label><br />
<input type="submit" name="authorized" value="yes">
<input type="submit" name="authorized" value="no">
</form>');
}
// 認可画面にて「yes」をクリックしていたら、認可コード発行処理を開始します。
$is_authorized = ($_POST['authorized'] === 'yes');
$server->handleAuthorizeRequest($request, $response, $is_authorized,$_SESSION['username']);
$response->send();
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment