読者です 読者をやめる 読者になる 読者になる

Androidはワンツーパンチ 三歩進んで二歩下がる

Android卵プログラマーの記録ブログ

FacebookのアクセストークンをGraph API Explorerでテストする

Facebook 開発一般

忘れそうなので自分用にメモしておきます。すみませんが私のFacebook開発知識は超初心者です(汗)
公式サイトはこちらです。developers.facebook.com


前提としてFacebookの開発者登録が必要ですので、こちらの参考サイト様などを見て登録しておきます。
Facebook連携 〜① Facebook開発者登録 〜 - Qiita
Facebook Developers


この記事ではFacebookの機能を利用したアプリを作る場合にGraph APIを利用してアクセストークンをリクエストに含めたいとします。
申請が必要なアクセストークンをGraph API Explorerで生成してAPIを実行するところまでやってみたいと思います。


Using the Graph APIdevelopers.facebook.com

Graph API Reference(v2.4)developers.facebook.com


例えばブラウザから次のようにアクセスするとFacebookの名前とidが返ってきます。

https://graph.facebook.com/v2.4/me?fields=id,name&access_token=ここにあなたのアクセストークン

{
   "id": "69609XXXXXXXXXX",
   "name": "Your Name"
}

ほとんどのGraph APIはアクセストークンが必要なので指定しないとエラーが返ってきます。

https://graph.facebook.com/v2.4/me?fields=id,name

{
   "error": {
      "message": "An active access token must be used to query information about the current user.",
      "type": "OAuthException",
      "code": 2500
   }
}

アプリを作成するときには、アクセストークンとログインについてドキュメントを読んで実装する必要があります。
Access Tokensdevelopers.facebook.com



アクセストークンが今すぐ欲しい!テスト用に!Graph API を叩きたい!という時はここにアクセスしましょう。

Graph API Explorer (要ログイン)
https://developers.facebook.com/tools/explorer

デフォルトではApplication(画面右上です)はGraph API Explorerとなっています。
ここを別のアプリに切り替えてGet Tokenボタンを押すとそのアプリのアクセストークンが表示されます。

画面左上のGraph APIというところの下の入力欄はクエリを指定できます。
ただしブラウザからアクセスするときのようにアクセストークンを指定しなくても
Get Tokenのところのアクセストークンを指定したことになります。

Submitボタンを押すと「me?fields=id,name」というリクエストに対応して次のように表示されると思います。

f:id:sakura_bird1:20150822140947p:plain


次にタイムラインの情報を取得したいとします。
ここで必要なのはタイムライン情報を取得するためのuser_postsパーミッションです。
公式には次のようにあります。

user_posts

Provides access to the posts on a person's Timeline. Includes their own posts, posts they are tagged in, and posts other people make on their Timeline.

Review
If your app requests this permission Facebook will have to review how your app uses it.

Common Usage
Provide creative content from Timeline posts.

Provide value to the user by visibly analyzing the content of the posts on their Timeline.


Non-visible use of this data such as sentiment analysis or guarding against spam bots.

このパーミッションを必要とする場合「申請が必要」とあります。
実際のアプリを実装する場合は英語で色々と書いて申請しないとなりません。

Login Review

Permissions with Facebook Logindevelopers.facebook.com

https://developers.facebook.com/docs/facebook-login/permissions/v2.4#reference



Googleで「facebook パーミッション 申請」で検索してみると色々と参考になります。

でも申請をしなくてもGraph API Explorerを使うと、ユーザー(自分のみです。)に対して強制的に任意の「許可」を承認した状態にしたアクセストークンをゲットすることが出来ます。

「Get Tokenボタン」→「Get Access Tokenボタン」を押すと「アクセス許可を選択」画面が表示されます。

ここで「user_posts」をチェックして「Get Access Token」ボタンを押します。

この例ではuser_friendsを選択してますが、user_posts に読み替えてください。
f:id:sakura_bird1:20150822151118p:plain

すると、許可ダイアログが表示されますので、OKボタンを押します。

ここでuser_posts権限入りのアクセストークンが生成されたはずです。
でもちゃんと権限が入ってるんでしょうか?

次のページでテストしてみましょう。

Access Token Debugger (要ログイン)
https://developers.facebook.com/tools/debug/accesstoken/


ここの入力欄に先ほど生成したアクセストークンをコピペして「Debugボタン」を押します。

次のようにアクセストークンの情報が表示されます。
ちゃんとScopesのところにuser_postsとありますね。
f:id:sakura_bird1:20150822152340p:plain


話は少し脱線しますが、Graph API ExplorerのApplicationのところをGraph API Explorer以外のものにするとAccess Token Debuggerの下の方に「Extend Access Token」というボタンが現れます。
これを押すと、有効期限の長いアクセストークンを作成することができます。アプリ内でアクセストークン固定でテストしたい時など有効期限の長いアクセストークンにするといいです。

f:id:sakura_bird1:20150822160743p:plain


ここまで行った手順で、タイムライン情報を取得できるはずです。
例えばブラウザから次のようにアクセスするとFacebookの名前とタイムラインの情報が返ってきます。

https://graph.facebook.com/v2.4/me?fields=name,posts{description,message,link,name,created_time}&access_token=ここにあなたのアクセストークン

f:id:sakura_bird1:20150822162754p:plain


上記で権限を与えるのを取り消すには自分のFacebookページ > アプリ > 設定 > すべて表示 > アプリを選択して✕をクリックします。

以上です。

AndroidSDKはこちらです。developers.facebook.com