Do what you want to do

プログラミングとかとか

yammer REST APIの使い方

yammerとは

皆さんはyammerをご存知でしょうか?
エンタプライズソーシャルと言われる企業内情報共有ツールです。
2012年にMicrosoftに買収されたのでご存じの方もいるのではないでしょうか。
ここ最近yammerのREST APIを弄っているので使い方を紹介したいと思います。

アプリケーション登録

REST API経由でyammerのデータを操作するにはまずアプリケーションの登録が必要です。
下記公式ドキュメントに手順が書いてあります。
https://developer.yammer.com/introduction/#gs-registerapp

アクセストークンを取得

次にAPIを実行する時の認証情報となるアクセストークンを取得します。
ここではサーバーサイドの認証フローで手順を説明します。
※クライアントサイドの認証フローに関しては下記公式ドキュメントを参照してください。
https://developer.yammer.com/authentication/#a-oauth2

1. Webブラウザに下記URLを入力します。
https://www.yammer.com/dialog/oauth?client_id=<クライアントID>&redirect_uri=<リダイレクト先URL>

client_id アプリ登録時に発行されたクライアントID
redirect_uri アプリ登録時に設定したリダイレクト先URL

f:id:katoj:20141224184903p:plain

2. yammerの認証画面が表示されるのでアカウント情報を入力します。
f:id:katoj:20141224185126p:plain

3. yammerの認証が成功するとアプリの認可画面が表示されるので許可します。
f:id:katoj:20141224185505p:plain

4. リダイレクトされたURLから認可コードを取得します。
例)http://localhost/?code=GRxm2lr6HHtTtj8X6xLYQ

5. Webブラウザに下記URLを入力します。
https://www.yammer.com/oauth2/access_token.json?client_id=<クライアントID>&client_secret=<クライアントシークレット>&code=<4.で取得した認可コード>

client_id アプリ登録時に発行されたクライアントID
client_secret アプリ登録時に発行されたクライアンシークレット
code 認可コード

6. 5のリクエストの結果、返されるレスポンス(JSON形式)に含まれるtokenプロパティの値がアクセストークンです。

[
    {
        "user_id": ユーザーID,
        "network_id": ネットワークID,
	<途中省略>
        "network_name": ネットワーク名,
        "token": "xxxxxxxxxxxxxxxxxxxx",
 	以下省略
    ・・・
    }
]

API実行

アクセストークンが取得できればいよいよAPIの実行です。
ここでは現在のユーザーの情報を取得してみましょう。

それには下記URLにGETリクエストを送ります。
https://www.yammer.com/api/v1/users/current.json

この時、アクセストークンをHTTPのAuthorizationヘッダに指定します。
フォーマットは以下となります。

Key Value
Authorization Bearer アクセストークンの値

アクセストークンを指定していない場合やアクセストークンが無効な場合は
認証エラーとなるのでご注意ください。

GETリクエストのレスポンスの内容を見てみましょう。

{
    "type": "user",
    "id": ユーザーID
    "network_id": ネットワークID,
    "state": "active",
    "guid": GUID,
    "job_title": null,
    "location": null,
    "significant_other": null,
    ・・・以下省略
}

無事にユーザーに関する情報が取得できました。
今回はAuthorizationヘッダに指定したアクセストークンに紐づくユーザーの情報を取得しましたが、アクセストークンの指定はほかのREST APIを実行する時にも必ず必要なので覚えておきましょう。
まぁ、処理を共通化しておけばいいだけのことです。

まとめ

アクセストークンの取得が若干面倒ですが、APIの実行は結構簡単ではないでしょうか。
yammer REST APIでは上記以外にも色々できそうなので興味のある方は試してみてはいかがでしょうか。