Facebook Oauth 2.0アクセストークンの有効期限はありますか?


124

私はFacebookでOauth 2.0認証を試してみましたが、Facebookが通過するアクセストークンが期限切れになるのではないかと考えていました。もしそうなら、寿命の長いアクセストークンをリクエストする方法はありますか?


4
この質問にいくつかの詳細を追加するには、ユーザーがFacebookのパスワードを変更すると、offline_accessも無効になります。したがって、古いアクセストークンを使用しているときにエラーが発生した場合は、安全にプレイして新しいアクセストークンを再取得することをお勧めします。
ホアンロング


2
みんな、あなたはただただロックするだけです。質問が何であれ、私はそれを解決します...ありがとうございました
vinay

3
Facebookは、5月1日にoffline_access権限を廃止する予定です。将来、すべてのアクセストークンは、「有効期限」(60日)がなくなるか、ユーザーがパスワードを変更するか、ユーザーがアプリの認証を解除するか、ユーザーがログアウトすると期限切れになります。API。PSログアウト時にアクセストークンがまだ期限切れになる場合、Facebookが新しい「有効期限」を60日に設定する理由がわかりません(ユーザーが60日以内にログアウトする傾向があるようです)。多分私は何かが欠けている... 有効期限
スティーブンウェクスラー

1
access_tokenの動作は変更されています。2012年7月の「重大な変更」を調べてください。offline_access権限は廃止されており、access_tokenのライフサイクルは長くなります。
qodeninja 2012年

回答:


64

少し掘り下げた後、私はこれを見つけました。それが答えのようです:

更新(2018年4月11日)

  • トークンは約60日後に期限切れになります。
  • トークンは、アプリを使用しているユーザーがFacebookのサーバーにリクエストを行うと、1日1回、最大90日間更新されます。
  • すべてのアクセストークンは、アプリを使用するユーザーの同意を得て、90日ごとに更新する必要があります。

Facebookの変更を発表(10/04/2018)

Facebookがトークンの有効期限ページを更新(10/04/2018)

offline_access:アプリケーションがユーザーに代わっていつでも承認済みリクエストを実行できるようにします。デフォルトでは、ほとんどのアクセストークンは、アプリケーションがユーザーがアプリケーションをアクティブに使用しているときにのみ、ユーザーに代わってリクエストを行うようにするために、短時間で期限切れになります。この権限により、OAuthエンドポイントによって返されるアクセストークンの寿命が長くなります。

要求された許可値。

http://developers.facebook.com/docs/authentication/permissions

更新

offline_access権限は少し前に削除されました。

https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/


2
これに応えて、私は皆さんに役立つかもしれないオープンソースライブラリを開始しました。そのoAuthライブラリは、oAuth実装ですべてのソーシャルネットワークをサポートすることを目的としています。オフライン投稿を含む拡張された権限をすでにサポートしています。 code.google.com/p/socialoauth
Tendrid、

ユーザーがFacebookでパスワードを変更すると、offline_accessトークンも期限切れになります。
Bemmu

残念ながら、これは現在の問題に対する「クリーン」な解決策ではありません。最初に、またはすべてこの許可を求めると、追加の許可(このアプリケーションはいつでもFacebookアカウントにアクセスできるようになります)がユーザーに警告され、潜在的なクライアントの多くがオフになります。第二に、ユーザーがパスワードを変更した場合、このトークンは無効になります。したがって、特にリッチクライアントのajax駆動のWebアプリケーションでは、新しいaccess_tokenを取得するためのより良い方法(たとえば、更新トークン)が必要です。
ウラジミール

24
彼らのAPIドキュメントによると、offline_accessは2012年5月2日をもってサポートされなくなります。–
Ben Lesh

@TendridライブラリはFacebookとTwitterのみをサポートしています。
mareoraft

30

これを試してみてください

https://graph.facebook.com/oauth/authorize?
    client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
    redirect_uri=http://www.example.com/

ライフタイムアクセストークンを取得するには、使用する必要があります scope=offline_access

の意味scope=offline_accessは:-

アプリケーションがユーザーに代わっていつでも許可されたリクエストを実行できるようにします。デフォルトでは、ほとんどのアクセストークンは、アプリケーションがユーザーがアプリケーションをアクティブに使用しているときにのみ、ユーザーに代わってリクエストを行うようにするために、短時間で期限切れになります。この権限により、OAuthエンドポイントによって返されるアクセストークンの寿命が長くなります。

しかし、facebookの将来のアップグレードによると、offline_acees機能は2012年10月3日から永久に廃止される予定です。また、ユーザーには60日間有効なアクセストークンが与えられ、アクセストークンの有効期限が切れる前にFacebookから通知されるか、カスタムを取得できますFacebook Apiから有効期限値をフェッチする通知機能。


10
私はfbが彼のapiで変更され、現在有効期間トークンが利用できないことをお知らせしたいと思います。オフラインアクセスは60日間アクティブになります。
PrateekSaluja 2012年


17

私はOPと同じ質問でここに来ましたが、offline_accessの使用を示唆する回答は私に危険信号を上げています。

セキュリティの面では、ユーザーのFacebookアカウントへのオフラインアクセスは質的に異なり、シングルサインオンにFacebookを使用するよりもはるかに強力であり、軽く使用しないでください(本当に必要な場合を除きます)。ユーザーがこの権限を付与すると、「アプリケーション」はいつでもどこからでもユーザーのアカウントを調べることができます。「アプリケーション」は引用符で囲みます。これは、実際には資格情報を持つ任意のツールです。ユーザーがそれらに共有することに同意した情報にアクセスできるWebサーバーとは何の関係もないツールスイート全体をスクリプト化できます。資格情報。

この機能を使用してトークンの有効期間を短くすることはしません。それは本来の目的ではありません。実際、トークンの有効期間自体はセキュリティ機能です。これらのトークンの適切な使用に関する詳細をまだ探しています(それらを永続化できますか?それらをどのように/保護する必要がありますか?FacebookはOAuth 2.0の「更新トークン」をメインのトークン内に埋め込みますか?そうでない場合、どこにあり、 /またはどのように更新しますか?)、しかし、offline_accessが正しい方法ではないと確信しています。


1
ここでデビッドと同じ疑問。オフラインアクセス用に保存されたトークンをセキュリティで保護する方法に関する詳細情報を見つけましたか?
ニールエイズ

Facebookのドキュメントはひどいですが、offline_accessで取得されなかったアクセストークンを永続化することはかなり安全な状況だと思います。(FBユーザーがまだログインしている間に)それにアクセスする人は誰でも、ユーザーがあなたに許可を与えたすべてのことを実行できることは事実ですが、ユーザーがFacebookからログアウトするとすぐにトークンが無効になるため、それほど悪いことではありませんどこでも。それはまだセキュリティホールです(/ meリクエストでアプリシークレットを提供する必要がないのは奇妙だと思います)が、制限はありません。誰かがこれを理解したら、私を自由に修正してください。
デビッドポープ

8

はい、期限切れです。「access_token」と一緒に渡される「expires」値があり、それから私が知ることができるのは約2時間です。探していましたが、有効期限の延長をリクエストする方法がわかりません。


3
「offline_access」権限をリクエストした場合、トークンは期限切れになりません。
ブレンダンバーグ

1
@Brendan:しかし、それは、すぐにユーザーの変更、彼/彼女のFacebookのパスワードとして無効を取得します
ホアンロング

@HoàngLongこれへの参照はありますか?
Charles Prakash Dasari、2011


4

ユーザーがFacebook経由でサイトにログインするたびに、ユーザーのアクセストークンをいつでも更新できます。オフラインアクセスでは、ユーザーがアプリケーションアクセスを取り消すか、ユーザーがパスワードを変更するたびにアクセストークンが変わるため、生涯にわたるアクセストークンを取得できるとは限りません。

Facebookから引用http://developers.facebook.com/docs/authentication/

注:アプリケーションがoffline_access権限を要求していない場合、アクセストークンには時間制限があります。ユーザーがFacebookからログアウトすると、時間制限付きアクセストークンも無効になります。アプリケーションがユーザーからoffline_access権限を取得した場合、アクセストークンに有効期限はありません。ただし、ユーザーがパスワードを変更するたびに無効になります。

ユーザーのFacebook UIDとアクセストークンをデータベースのユーザーテーブルに保存し、ユーザーが[Facebookでログイン]ボタンをクリックするたびに、Facebook JavaScript APIを使用してログインステータスを確認し、応答から接続ステータスを調べたとします。 、ユーザーがサイトに接続している場合は、テーブルのアクセストークンを更新できます。


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 

1

Facebookアカウントにログインし、アプリケーション設定を編集します(アカウント->アプリケーション設定->アカウントを使用するアプリケーションの追加権限)。権限をオフにします(アプリケーションを使用していないときにデータにアクセスします(offline_access))。次に、アプリケーションにログインすると、faceが新しいトークンの発行を予約します。


1

基本的なFacebookトークンは約1時間で期限切れになります。ただし、「exchange」トークンを使用して、長期間有効なトークンを取得できます https://developers.facebook.com/docs/facebook-login/access-tokens

GET /oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id={app-id}&
    client_secret={app-secret}&
    fb_exchange_token={short-lived-token} 

0

FacebookのグラフAPIを操作するときは、次のことを確認してください。

1)アプリケーション接続URLは、「redirect_uri」接続URLのベースにする必要があります。-www.x-minds.org/fb/connect/ redirect_uri-www.x-minds.org/fb/connect/redirect 2)「redirect_uri "両方のケースで同じである必要があります(確認コードを要求し、access_tokenを要求する場合)redirect_uri-www.x-minds.org/fb/connect/redirect 3)を要求するときに引数をエンコードする必要がありますaccess_token 4)は、access_tokenを要求するときに引数(type = client_cred)を渡すべきではありません。許可サーバーは、セッション部分なしでトークンを発行します。このトークンは、グラフAPIで「me」エイリアスとともに使用できません。このトークンの長さは(40)ですが、セッション部分のあるトークンの長さは(81)です。セッション部分のないアクセストークンは、いくつかのケースで動作します

例えば: - https://graph.facebook.com/ access_tokenは= 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM?。しかし、「me」エイリアスを持つグラフAPIは、セッション部分を持つトークンのみで動作します。


0

トークンがいつ期限切れになるかは正確にはわかりませんが、期限切れになると、オフラインアクセス権を付与するオプションがなくなります。

とにかく、ユーザーにオフラインのアクセス許可を与えることを要求するのはやり過ぎです。必要に応じて、Webサイトがユーザーのブラウザーで開かれている限り、トークンは有効なままで十分です。これにはもっと簡単な解決策があるかもしれません-定期的にiframeを使用してユーザーを再ログインします:cookie phpからfacebook auto re-login

私のために働いた...


0

これはかなり数年後ですが、Facebook Graph API Explorerのアクセストークンの横に小さな情報記号が表示され、アクセストークンツールアプリにアクセスして、APIトークンを数か月間延長できます。開発中に役立つ場合があります。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.