Created
April 3, 2018 00:42
-
-
Save noriyukitakei/2a673a90ffe58c29c2d5522c2c2549ac to your computer and use it in GitHub Desktop.
アクセストークン取得
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// セッションを開始します。 | |
session_start(); | |
// usernameというセッション変数に何もセットされていなかったら、 | |
// すなわち未認証だったら、ログイン画面にリダイレクトします。 | |
if (!isset($_SESSION['username'])) { | |
// ログイン画面にリダイレクトする前に、ログイン後に | |
// 戻る画面の戻り先のURL(つまり本画面のURL)をセッションに格納します。 | |
$_SESSION['back'] = $_SERVER["REQUEST_URI"]; | |
header('Location: /login.php'); | |
exit; | |
} | |
// 認可コードを取得します。 | |
$code = $_GET['code']; | |
// 認可コードを取得するために必要なPOSTリクエストを生成します。 | |
// アクセストークンを取得する際には、grant_typeにauthorization_codeを | |
// 指定し、codeにOAuthプロバイダー(Facebook)から発行された認可コードを指定します。 | |
$data = array( | |
"grant_type" => "authorization_code", | |
"code" => $code | |
); | |
// アクセストークンを取得するため、POSTリクエストを発行します。 | |
$curl = curl_init(); | |
curl_setopt($curl, CURLOPT_URL, 'https://[OAuthプロバイダーのホスト名]/token.php'); // アクセストークン取得先のURLを指定します | |
curl_setopt($curl, CURLOPT_POST, true); // POSTリクエストを有効にします | |
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 出力を有効にします | |
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // SSL証明書の検証を無効にします(オレオレ証明書対策) | |
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // 送信するPOSTデータを定義します。 | |
curl_setopt($curl, CURLOPT_USERPWD, "twitter:password"); // クライアントID、パスワードをBASIC認証で送ります | |
// 実行結果を取得します。 | |
$result = curl_exec($curl); | |
curl_close($curl); | |
$json = json_decode($result, true); | |
$access_token = $json["access_token"]; | |
// OAuthコンシューマー(Twitter)のユーザー情報を格納しているテーブルに | |
// アクセストークンを保存します。これで、ユーザーに紐付いたアクセストークンが必要に応じて | |
// いつでも取り出せるようになります。 | |
$pdo = new PDO('mysql:dbname=consumer;host=localhost', 'root', 'password'); | |
$stmt = $pdo->prepare('UPDATE consumer_users SET access_token = :access_token where username = :username'); | |
$stmt->execute(array(':access_token' => $access_token, ':username' => 'ntakei')); | |
// Twitter投稿一覧画面に遷移します | |
header("Location: /messages.php"); | |
exit; | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment