phpでmixiGraphAPIを使ってつぶやきを投稿するサンプルを作ってみました。 ※mixiGraphAPIを使うにはOAuth認証を使うのでこちらより必要なモノを取得してください必要なもの・Consumer Key ・Consumer Secret 前回の記事を参考にしてください。 前回の記事でサービスURLとリダレクトURLをそれぞれ下記のように設定しました。 ・サービスURL http://example.com/index.php ・リダイレクトURL http://example.com/callback.php こちらの話からしていきたいと思います。 まず、サービスURLとは自分で作成したサービスへの動線になります。 今回はサービスURLにアクセスした際に自動でmixiに認証しに行くように実装します。 次にリダイレクトURLですが、こちらはmixiの認証からのレスポンスを受け取るURLになります。 リダイレクトURLの方にアクセスユーザのOAuth認証用のパラメータを保存したりする処理を 実装しておけば大丈夫だと思います。 今回はサンプルということでリダイレクトURLの方でつぶやく機能もそのまま実装しました。 index.php<?php // 認証用パラメータ $param = array( 'client_id' => '取得したConsumer Key', 'response_type' => 'code', 'scope' => 'w_voice', 'display' => 'pc', 'state' => null, ); // 認証先URL $auth_url = 'https://mixi.jp/connect_authorize.pl'; // 認証用パラメータをクエリストリングに $request_param = http_build_query($param, null, '&'); // リクエストURLを作成 $request_url = $auth_url . '?' . $request_param; // 認証 header('Location: ' . $request_url); exit;callback.php<?php session_start(); $access_token = null; // Authレスポンスの取得 $code = $_GET['code']; if ($code != '') { // アクセストークンの取得 $access_token = getAccessToken($code); } // つぶやきを投稿する if (!is_null($access_token)) { // 投稿内容 $text = 'つぶやきテスト'; $res = postVoice($text, $access_token); // 結果をdump echo "<pre>"; var_dump($res); echo "</pre>"; } /** * アクセストークンの取得 * @param string $code Authレスポンス * @return string $access_token アクセストークン */ function getAccessToken($code) { // アクセストークン取得用パラメータ $param = array( 'grant_type' => 'authorization_code', 'client_id' => '取得したConsumer Key', 'client_secret' => '取得したConsumer Secret', 'code' => $code, 'redirect_uri' => 'http://example.com/callback.php', ); // cURLでアクセストークンを取得する $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_URL, 'https://secure.mixi-platform.com/2/token'); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param)); $res = curl_exec($ch); curl_close($ch); // 返却値がjson形式なのでデコードする $res = json_decode($res, true); $access_token = $res['access_token']; return $access_token; } /** * つぶやきを投稿する * @param string $text つぶやく内容 * @param string $access_token アクセストークン * @return assoc_array $res APIからのレスポンス */ function postVoice($text, $access_token) { // つぶやき投稿用URL $voice_url = 'http://api.mixi-platform.com/2/voice/statuses'; // つぶやき投稿用パラメータ $param = array( 'status' => $text, ); // cURLでつぶやきを投稿 $ch = curl_init(); // リクエストヘッダを作成 $header = array( 'Authorization: OAuth ' . $access_token ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_URL, $voice_url); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param, null, '&')); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); $res = curl_exec($ch); curl_close($ch); // 返却値がjson形式なのでデコードする $res = json_decode($res, true); return $res; }index.php(サービスURL側) 解説まず、認証用パラメータですが、上記の5つをGETパラメータとして渡す必要があります。 ※stateパラメータは必須ではない。 注意が必要なのはscopeパラメータで、そのサービスを利用する上でそのユーザのデータに アクセスする必要がある項目になります。 今回はつぶやきの投稿を行うので「w_voice」を指定しています。 ※複数指定する場合はスペース区切りで指定する。callback.php(リダイレクトURL側) 解説index.phpが認証された場合にリダイレクトされてくるURLです。 こちらで認証用文字列を受け取ります。 mixiからリダイレクトURLに下記のようにGETパラメータを付加された状態でリダイレクトされてきます。http://example.com/callback.php?code=認証用文字列※GETパラメータ「code」はアクセストークンを取得する際に必要になります。 このGETパラメータを使いアクセストークンを取得します。 その次に取得したアクセストークンを使いつぶやき用のURLにcURLを使いPOSTメソッドでつぶやき本文を パラメータとして送信します。 ※ mixiGraphAPIからの返却値はすべてjson文字列になります。 ※ ですので、php側でこねくりまわしたりする際にはパースして配列に戻してやる 必要があります。 解説は以上になります。 不明な点がありましたらコメントにてどうぞ 今mixiGraphAPIのライブラリを作成しているのでそのうち公開できたらなーとか思ってます。 終わり 関連記事: 【mixi】mixiGraph APIを使うための準備 【PHP】mixiGraphAPIのOAuth認証用ライブラリを作成しました。【mixi】
2011/12/23
【PHP】phpでmixiGraphAPIを使ってmixiにつぶやきを投稿するサンプル【mixi】
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿