2012年7月3日火曜日

offline access tokenがなくなるのでいろいろまとめ

開発者がFacebookのデータを使いたいときやっかいなのが
認証で使うアクセストークン。

2012年の5月まではoffline access tokenという最強(最恐)のトークンがあったのですが、いろいろあってなくなっちゃいました。

offline access tokenなくすからちゃんとしたの使ってよーってことが
ここに書かれてます。

このページの冒頭に

 Instead please check the Deprecation of Offline Access Permission document which explains how to start using access tokens that are valid for up to 60 days.

なくす代わりに60日くらい有効なやつあるからそっち使ってね!
って書いてます。

今回アクセストークンと呼んでるものは三種類あるアクセストークンのうちuser access token に該当する記載だと思われます。
ここに載ってないアクセストークンでもう一個app access token というやつがありますが、これは基本的に無限の寿命を持ってるっぽいので。。
ただできることは限られてます。
参考:http://wktcoder.blogspot.jp/2012/06/facebook.html


基本的にこのページをある程度日本語でまとめてます。
間違ってたら教えてくださいw


offline access token はやめますよー
アクセストークンはいろんなもんソーシャルにできたりするので使ってね。
offline access tokenやめる代わりに有効期限長いアクセストークン使えるようにしたよ!
基本的にはアプリに来た時に新しくアクセストークン発行するよ!(下に例外もあり)

・寿命短いアクセストークンの寿命伸ばせますよー
通常のアクセストークンの有効期限は1~2時間です。
寿命伸ばすオプションあるのでそれ使えば60日になるよ!
このオプションは一日に何回やったも最初の一回だけが有効だよ!

例外が3つ
例外1 デスクトップアプリ
デスクトップアプリの場合はFacebookにログインした状態で一回認証すれば寿命長いアクセストークンあげるよ

例外2 古いSDK使ったネイティブモバイルアプリ(iOS、android)
寿命長いアクセストークン取れる新しいSDK出したからそっち見てね。
古いの使ってると定期的に認証いるよ。

例外3 新しいSDK使ったネイティブモバイルアプリ(iOS、android)
新しいSDKだとユーザがログインする度に新しい寿命長いアクセストークン取ってるから基本的に気にしないでいいよ。



ここから新しい設定への移行のためのシナリオ5つ
このページにある設定にしとけば、過去にoffline access token取得してる場合はユーザにダイアログ出さずにいけるよ。

シナリオ1 過去にoffline access token 要求してないアプリの場合
基本的には何も変わりません。
もし、クライアント側でアクセストークン取得してた場合は

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

ってやつ使えば簡単に寿命延長できるのでやった方がいいかもよ!

シナリオ2 過去にoffline access token 要求してたアプリの場合
過去に要求して取得してる場合は基本的にはそのまま使えます
ただ、新しいユーザーに関しては要求しても帰ってくるのは寿命短いやつなので気をつけてね!

offline access token を完全に廃止する頃になると自動的に60日の寿命にしちゃうので気をつけてね!詳しくはロードマップで。

シナリオ3 サーバーサイドの開発者の方へ
サーバーサイドのAouthで認証したアクセストークンはデフォルトで寿命長いアクセストークンです。

cronなどで自動的に寿命を延長することはできません。
Aouth認証には有効な"authorization code"が必要でその寿命は1~2時間であり、それを得るにはログインしてるユーザが必要だよ!

シナリオ4 クライアントサイドで寿命伸ばしたい方へ

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

クライアントサイドでやる場合は基本的にこれやれば大丈夫です。
寿命長いアクセストークンかえってきます。

シナリオ5 ページアクセストークン
ページアクセストークンはgraph api[User ID]/accountsみたいなクエリでとれます。
このときのユーザーアクセストークンが寿命短いアクセストークンであれば取れるページアクセストークンも寿命短いバージョン。
寿命長いユーザーアクセストークンでリクエストして取ればページアクセストークンも寿命長いバージョンが取れます。


以上がページのまとめです。

いろいろやってみた感じシナリオ3のサーバーサイドでデフォルト寿命長いってのはたまに違ったことがあったので、

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

やる必要があることがありました。
まだ移行期間だからかな。。

間違ってるとことかあったらご指摘おねがいしまーす!

0 件のコメント:

コメントを投稿