2012年4月21日

Yahoo! Social

Social API はじめました

  • このエントリーをはてなブックマークに追加

こんにちは。プラットフォーム開発本部の西岡です。

先月リリースを行いました、Yahoo! JAPANのソーシャル機能オープン化第一弾!!である、Social APIの利用方法についてご紹介したいと思います。

【Yahoo! JAPANのソーシャルとは】

昨年10月、Yahoo! JAPANのSNSサービスであるYahoo! Daysが、残念ながらサービス終了となってしまいました。
しかし、そこで作られた友だちつながりやプロフィール情報は、Yahoo!プロフィールに引き継がれ、Yahoo! JAPAN上のさまざまなサービスで現在も利用されています。

そして今回リリースされたSocial APIの第一弾では、以下4種類の機能を提供しています。

プロフィール情報の取得

  • プロフィール情報の取得
  • 友だち一覧の取得
  • ひとことの取得/更新
  • 近況の取得/更新/削除

※これらはすべてYahoo!プロフィールで管理されている情報です

【30分で試せるSocial API】

Social APIでは、認証にOAuthを使用していることもあり、OAuthを含めた複雑な手続きを代替してくれるSDKを用意しています。SDKを使えば、簡単にSocial APIを試せますので、早速使ってみましょう!

準備

まずはアプリケーションIDの登録です。
Social APIを利用するには、新しくアプリケーションIDを登録する必要があります。

  • アプリケーションを登録する際のポイント

1. 開発するアプリケーションの選択では「認証を必要とするAPIを使ったアプリケーション」を選択

2. OAuthで利用するスコープには「お客様のプロフィール情報参照機能」「お客様のひとこと関連機能」「近況、活動関連機能」を利用するに設定

 ※「お客様のプロフィール情報参照機能」は2種類ありますが、どちらか一方のみ選択できます。生年月日の「年」を取得するのか、「月日」を取得するのかが違います。

登録完了後、アプリケーションの詳細画面で、「Consumer Key」、「Consumer Secret」、「YAP ID」を確認しておきます。
アプリケーションの詳細は、管理画面からリンクされています。

次にSocial SDK for PHPをダウンロードして解凍、アプリケーションを動作させるサーバー上に配置します。SDKの詳細については、展開したアーカイブの「docs」ディレクトリ以下にドキュメントが用意されています。

以上で準備が整いました。

実行

例として、ひとことを投稿してみます。
下記サンプルを、アプリケーション登録時に指定した「サイトURL」以下に設置してください。

<?php
require("Yahoo.inc");
define('CONSUMER_KEY', "");    // Consumer Key (API Key) を指定
define('CONSUMER_SECRET', ""); // Consumer Secret を指定
define('YAP_ID', "");          // YAP ID を指定
 
$session = YahooSession::requireSession(CONSUMER_KEY,
                                        CONSUMER_SECRET,
                                        YAP_ID);
$user = $session->getSessionedUser();
 
// ログインユーザーのひとことを更新
$user->setStatus("こんにちは!!"); // UTF-8
 
// 更新直後なのでsetStatus()の反映を待ちます
sleep(1);
 
// ログインユーザーのひとことを取得
print_r($user->getStatus());
?>

いかがでしょうか。簡単ですよね。
ブラウザーでアクセスすると、OAuthの認証が始まり、同意するとログインしたIDでひとことが投稿されます。サンプルは固定値ですが、実際にアプリケーションとして出す場合は、ひとことをフォームで入力できるようにしたり、ログインしている人のプロフィール情報を表示したりと、いくつか手を加えると良いでしょう。

確認

そして、Social APIで投稿した「ひとこと」は、ひとことを扱っているYahoo! JAPANのサービス内でも表示されています。

Yahoo!メッセンジャー(Windows版メッセンジャー9.5.1以降)のステータス

なんとリアルタイム検索でも確認できます。

【応用もできるぞSocial API】

Social APIは、他APIと組み合わせることでより力を発揮します。
例えば震災関連情報のAPIと組み合わせると...

<?php
require("Yahoo.inc");
define('CONSUMER_KEY', "");    // Consumer Key (API Key) を指定
define('CONSUMER_SECRET', ""); // Consumer Secret を指定
define('YAP_ID', "");          // YAP ID を指定
 
$session = YahooSession::requireSession(CONSUMER_KEY,
                                        CONSUMER_SECRET,
                                        YAP_ID);
$user = $session->getSessionedUser();
 
// 友だちを取得します
$start = 1;
$count = 20;
$total;
$friends = $user->getConnections($start, $count, $total);
 
if (is_array($friends)) {
    $requestUrl = 'http://shinsai.yahooapis.jp/v1/Archive/search';
    foreach($friends as $friend){
        echo("<div>表示名: $friend->nickname</div>");
        $query = array(
            'appid' => CONSUMER_KEY,
            'guid'  => $friend->guid,
            'output' => 'php',
        );
        // 友だちのIDを使って写真を検索
        $response = $session->client->get($requestUrl, $query);
        $body = unserialize($response['responseBody']);
        $pictures = $body['ArchiveData']['Result'];
        if (is_array($pictures)) {
            echo('<div>');
            foreach($pictures as $picture){
                $pd = $picture['PhotoData'];
                $imgUrl = $pd['ScreenUrl'];
                $imgWidth = $pd['ScreenWidth'];
                $imgHeight = $pd['ScreenHeight'];
                echo("<img src='$imgUrl' height='$imgHeight' width='$imgWidth'>");
            }
            echo('</div>');
        }
        echo('<br />');
    }
}
?>

1. OAuthログインしている人の友だちを取得

2. 友だちの投稿した写真を検索

3. 友だちの表示名と共に写真を表示

ユーザーの友だちAPIでは、レスポンスにプロフィール情報が含まれているため、ユーザーのプロフィール情報(大)APIなどを使わずに、そのままプロフィール情報が表示ができます。

上記のような、Yahoo!のつながりを使ったソーシャルアプリが、わずか数十行で作れてしまいます。

他にもオークションのAPIと組み合わせると、こんなアプリも作れるはずです。

1. マイオークション表示(ウォッチリスト・開催中のオークション)からオークション情報を取得

2. アプリケーション利用者に、開催中のオークションを「近況」で知らせる

※「ひとこと」を使えば、言葉として、友だちやファン、そしてYahoo! JAPAN全体に伝わり、「近況」を使えば、アクティビティとして「自分の作成したアプリケーションを使っている人たち」という閉じた範囲で情報を伝えられます。

いかがでしょうか。
APIの組み合わせ次第で、Yahoo! JAPANのサービスではまだ実現されていない、新しい機能が生みだせるかもしれません。

【最後に】

Social APIでは、友だちに関する機能や、お気に入りに関する機能など、今後も続々と機能追加を予定しています。

また、皆さまからのフィードバックを元に、より使いやすいAPIにしていきたいと思いますので、ご意見・ご感想などありましたら、Yahoo! Social Web APIグループまで、お気軽にご投稿ください。

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加