【Croudia】Access Token等の取得
カテゴリ:Croudia 投稿日:2016年1月23日CroudiaのAPIはTwitterとそっくりですが、少し違います。TwitterはAccess TokenとAccess Token Secretで認証しますが、CroudiaはAccess TokenとRefresh Tokenで認証します。また、Access Tokenの有効期限は60分、Refresh Tokenは半年です。つまり、botが作りにくいというわけです。Access Tokenが切れたらRefresh Tokenで再取得します。でも6ヶ月経ったらRefresh Tokenも使えなくなる。
とりあえずAccess Token/Refresh TokenをPHPを取得しましょう。PHPの開始終了は省略します。
コンシューマーキーとシークレットはCroudia Developer Centerからアプリ登録をして取得できます。これはAuthorize URL(https://api.croudia.com/oauth/authorizeから始まるURL、アプリを認証するかを選択する画面)からリダイレクトされた時を想定しています。リダイレクトURLはアプリ登録時に設定してください。おそらく{リダイレクトURL}?code=…となっているはずです。このサンプルではAccess TokenやRefresh TokenをSESSIONに入れています。
エラー処理はしていません。
session_start(); $code=$_GET['code']; $data = array( "grant_type" => "authorization_code", "client_id" ="コンシューマーキーを入力", "client_secret" => "コンシューマーシークレットを入力", "code" => $code, ); $url = "https://api.croudia.com/oauth/token"; // POST用関数 function http_post ($url, $data) { $data_url = http_build_query ($data); $data_len = strlen ($data_url); return array ( 'content'=> file_get_contents ( $url, false, stream_context_create ( array ('http' => array ( 'method'=>'POST', 'header'=>"Content-Type: application/x-www-form-urlencoded\r\nHost: api.croudia.com\r\n", 'content'=>$data_url) ) ) ), 'headers'=> $http_response_header ); } // 送信 $results = http_post($url, $data); $result=$results[content]; $result=json_decode($result); $at=$result->access_token; $rt=$result->refresh_token; //変数$at/$rtに入りました $_SESSION['at']=$at; $_SESSION['rt']=$rt; //SESSIONに入りました //Access Tokenは60分しかもたないので有効期限が60分のCookieを入れておく場合はコメントアウトを戻す //$flag = setcookie("login", true, time() + 3600); //Cookieを取り出す時は$_COOKIE["login"]
長いですね。Twitterの時はライブラリで簡単認証だったのに…これもそのうちライブラリが出るんですかね。