Skip to content

Instantly share code, notes, and snippets.

@noriyukitakei
Created April 3, 2018 00:42
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/2a673a90ffe58c29c2d5522c2c2549ac to your computer and use it in GitHub Desktop.
Save noriyukitakei/2a673a90ffe58c29c2d5522c2c2549ac to your computer and use it in GitHub Desktop.
アクセストークン取得
<?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