私はFacebookでOauth 2.0認証を試してみましたが、Facebookが通過するアクセストークンが期限切れになるのではないかと考えていました。もしそうなら、寿命の長いアクセストークンをリクエストする方法はありますか?
私はFacebookでOauth 2.0認証を試してみましたが、Facebookが通過するアクセストークンが期限切れになるのではないかと考えていました。もしそうなら、寿命の長いアクセストークンをリクエストする方法はありますか?
回答:
少し掘り下げた後、私はこれを見つけました。それが答えのようです:
更新(2018年4月11日)
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/
これを試してみてください
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から有効期限値をフェッチする通知機能。
Facebookは現在、offline_accessパーミッションを廃止しているため、期限切れへの「アップグレード」を要求できるトークンが優先されます。私は今、これを処理しているだけなので、これ以上言うことはありませんが、このドキュメントが役立つ場合があります。
https://developers.facebook.com/docs/offline-access-deprecation/
私はOPと同じ質問でここに来ましたが、offline_accessの使用を示唆する回答は私に危険信号を上げています。
セキュリティの面では、ユーザーのFacebookアカウントへのオフラインアクセスは質的に異なり、シングルサインオンにFacebookを使用するよりもはるかに強力であり、軽く使用しないでください(本当に必要な場合を除きます)。ユーザーがこの権限を付与すると、「アプリケーション」はいつでもどこからでもユーザーのアカウントを調べることができます。「アプリケーション」は引用符で囲みます。これは、実際には資格情報を持つ任意のツールです。ユーザーがそれらに共有することに同意した情報にアクセスできるWebサーバーとは何の関係もないツールスイート全体をスクリプト化できます。資格情報。
この機能を使用してトークンの有効期間を短くすることはしません。それは本来の目的ではありません。実際、トークンの有効期間自体はセキュリティ機能です。これらのトークンの適切な使用に関する詳細をまだ探しています(それらを永続化できますか?それらをどのように/保護する必要がありますか?FacebookはOAuth 2.0の「更新トークン」をメインのトークン内に埋め込みますか?そうでない場合、どこにあり、 /またはどのように更新しますか?)、しかし、offline_accessが正しい方法ではないと確信しています。
はい、期限切れです。「access_token」と一緒に渡される「expires」値があり、それから私が知ることができるのは約2時間です。探していましたが、有効期限の延長をリクエストする方法がわかりません。
私は同じ問題を抱えていたので、間違ったトークンとリクエストに送信する適切なタイプでこの問題をすべて明らかにしたベンビディントンからのこのトピックに関する優れた投稿を参照してください。
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
ユーザーがFacebook経由でサイトにログインするたびに、ユーザーのアクセストークンをいつでも更新できます。オフラインアクセスでは、ユーザーがアプリケーションアクセスを取り消すか、ユーザーがパスワードを変更するたびにアクセストークンが変わるため、生涯にわたるアクセストークンを取得できるとは限りません。
Facebookから引用http://developers.facebook.com/docs/authentication/
注:アプリケーションがoffline_access権限を要求していない場合、アクセストークンには時間制限があります。ユーザーがFacebookからログアウトすると、時間制限付きアクセストークンも無効になります。アプリケーションがユーザーからoffline_access権限を取得した場合、アクセストークンに有効期限はありません。ただし、ユーザーがパスワードを変更するたびに無効になります。
ユーザーのFacebook UIDとアクセストークンをデータベースのユーザーテーブルに保存し、ユーザーが[Facebookでログイン]ボタンをクリックするたびに、Facebook JavaScript APIを使用してログインステータスを確認し、応答から接続ステータスを調べたとします。 、ユーザーがサイトに接続している場合は、テーブルのアクセストークンを更新できます。
基本的な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}
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は、セッション部分を持つトークンのみで動作します。
トークンがいつ期限切れになるかは正確にはわかりませんが、期限切れになると、オフラインアクセス権を付与するオプションがなくなります。
とにかく、ユーザーにオフラインのアクセス許可を与えることを要求するのはやり過ぎです。必要に応じて、Webサイトがユーザーのブラウザーで開かれている限り、トークンは有効なままで十分です。これにはもっと簡単な解決策があるかもしれません-定期的にiframeを使用してユーザーを再ログインします:cookie phpからfacebook auto re-login
私のために働いた...
これはかなり数年後ですが、Facebook Graph API Explorerのアクセストークンの横に小さな情報記号が表示され、アクセストークンツールアプリにアクセスして、APIトークンを数か月間延長できます。開発中に役立つ場合があります。