ラベル mixi の投稿を表示しています。 すべての投稿を表示
ラベル mixi の投稿を表示しています。 すべての投稿を表示

2011/12/26

【PHP】mixiGraphAPIのOAuth認証用ライブラリを作成しました。【mixi】

ということで前回の記事で最後の方に言っていたmixiGraphAPIのOAuth認証用
ライブラリを作りました。

使い方等はreadme.txtなどに書いてありますが、至らない所が結構あると思うので
何かあればコメント欄にコメントをお願いします。

ダウンロードはこちらから

終わり


関連記事:
【mixi】mixiGraph APIを使うための準備
【PHP】phpでmixiGraphAPIを使ってmixiにつぶやきを投稿するサンプル【mixi】

2011/12/23

【PHP】phpでmixiGraphAPIを使ってmixiにつぶやきを投稿するサンプル【mixi】

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】

【mixi】mixiGraph APIを使うための準備

今回はmixiGraphAPIを使うための準備メモになります。

まず、mixiGraphAPIを使用する方法は2つあります。

1.法人パートナー登録する
2.個人パートナー登録する

今回は会社とかは全く関係ないので2.の個人パートナー登録で行いました。
※個人パートナー登録するにはクレジットカードの登録が必要です。
個人パートナー登録はこちらを確認して行なってください。

次にmixiGraphAPIはOAuth認証を使います。
なので
Consumer key
と
Consumer Secret
が必要なのでその2つを取得します。

こちらにアクセスします。
ログインを要求されますのでいつものmixiにログインするパスワードを入力します。 ログイン後は下記の画面には切り替わりますので赤で囲まれているものをクリックします。
赤で囲まれている「新規サービス追加」をクリックします。
サービスを登録する画面が表示されますので、必須項目を下記画像のように入力します。 入力が完了したら、利用規約の「同意する」にチェックを入れて「確認」ボタンを押下します。
※ サービスURLとは作成するサービスのTOPページになります。 ※ リダイレクトURLはmixiでの認証を行った際にリダイレクトされるページになります。 確認画面にて入力項目があっているかを確認します。 確認できましたら「登録」ボタンを押下します。
下記の画面が表示されれば登録は完了です。 登録画面で登録したメールアドレスにメールが送信されます。 次にそのメールに書いてあるURLにアクセスします。
送られてきたメールのURLにアクセスすると再度ログイン要求されますのでログインします。 最初にログインした時のようにいつもmixiにログインするパスワードでログインします。
ログイン後に「管理サービス一覧」というリンクをクリックします。 こちらで登録したサービスの一覧を閲覧できます。
下記画像のように管理しているサービス一覧が表示されますので、今回登録したサービスを クリックします。
下記のサービス情報画面にてConsumer keyとConsumer Secretが取得できますので、こちらを プログラムに使用します。
これにてmixiGraphAPIを使うための準備は完了です。 次は簡単なつぶやきを投稿するものを作ってみます。 終わり 関連記事: 【PHP】phpでmixiGraphAPIを使ってmixiにつぶやきを投稿するサンプル【mixi】 【PHP】mixiGraphAPIのOAuth認証用ライブラリを作成しました。【mixi】