ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog

テクノロジー

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」以下に設置してください。

  • 利用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();
 
// ログインユーザーのひとことを更新
$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と組み合わせると...

  • 利用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と組み合わせると、こんなアプリも作れるはずです。

  • 利用API
    • ユーザーの近況
    • マイ・オークション表示

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

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

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

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

こちらの記事のご感想を聞かせください。

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました

このページの先頭へ