array( 'method' => 'POST' , 'content' => http_build_query( array( 'grant_type' => 'authorization_code' , 'code' => $_GET['code'] , 'client_id' => $client_id , 'client_secret' => $client_secret , 'redirect_uri' => $redirect_uri , ) ) , ) , ) ; // CURLを使ってリクエスト $curl = curl_init() ; // オプションのセット curl_setopt( $curl , CURLOPT_URL , 'https://api.moves-app.com/oauth/v1/access_token' ) ; curl_setopt( $curl , CURLOPT_HEADER, 1 ) ; curl_setopt( $curl , CURLOPT_CUSTOMREQUEST , $context['http']['method'] ) ; // メソッド curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false ) ; // 証明書の検証を行わない curl_setopt( $curl , CURLOPT_RETURNTRANSFER , true ) ; // curl_execの結果を文字列で返す curl_setopt( $curl , CURLOPT_POSTFIELDS , $context['http']['content'] ) ; // リクエストボディ curl_setopt( $curl , CURLOPT_TIMEOUT , 5 ) ; // タイムアウトの秒数 // 実行 $res1 = curl_exec( $curl ) ; $res2 = curl_getinfo( $curl ) ; // 終了 curl_close( $curl ) ; // 取得したデータ $json = substr( $res1, $res2['header_size'] ) ; // 取得したデータ(JSONなど) $header = substr( $res1, 0, $res2['header_size'] ) ; // レスポンスヘッダー (検証に利用したい場合にどうぞ) // JSONをオブジェクトに変換 $obj = json_decode( $json ) ; // アクセストークンが取得できない場合はエラー if( !isset($obj->access_token) || empty($obj->access_token) ) { $error = 'アクセストークンを取得できませんでした…。' ; } else { // 各データを整理 $user_id = $obj->user_id ; // ユーザーID $access_token = $obj->access_token ; // アクセストークン $refresh_token = $obj->refresh_token ; // リフレッシュトークン $expires_in = $obj->expires_in ; // アクセストークンの有効期限 // 出力する $html .= '

実行結果

' ; $html .= '
' ; $html .= '
ユーザーID
' ; $html .= '
' . $user_id . '
' ; $html .= '
アクセストークン
' ; $html .= '
' . $access_token . '
' ; $html .= '
リフレッシュトークン
' ; $html .= '
' . $refresh_token . '
' ; $html .= '
アクセストークンの有効期限 (残りの秒数)
' ; $html .= '
' . $expires_in . ' (' . date( 'Y/m/d H:i:s' , ( time() + $expires_in ) ) . ' まで)' . '
' ; $html .= '
' ; } } // 出力する $html .= '

取得したデータ

' ; $html .= '

下記のデータを取得しました。

' ; $html .= '

JSON

' ; $html .= '

' ; $html .= '

レスポンスヘッダー

' ; $html .= '

' ; // セッション終了 $_SESSION = array() ; session_destroy() ; } // 初回アクセスの場合 else { // CSRF対策 session_regenerate_id( true ) ; $state = sha1( uniqid( mt_rand() , true ) ) ; $_SESSION['state'] = $state ; // ユーザーをアプリ認証画面へアクセス(リダイレクト)させる header( 'Location: https://api.moves-app.com/oauth/v1/authorize?response_type=code&client_id=' . $client_id . '&state=' . $state . '&scope=' . rawurlencode( $scope ) ) ; } // エラー時の処理 if( isset($error) || !empty($error) ) { $html = '

' . $error . 'もう一度、認証をするには、こちらをクリックして下さい。

' ; } ?> Moves APIでOAuth認証をするサンプルデモ

配布元: Syncer