FacebookでOauth 2.0認証をいじっていますが、Facebookが渡すアクセストークンの有効期限が切れるのではないかと考えていました。もしそうなら、長寿命のアクセストークンをリクエストする方法はありますか?
少し掘り下げた後、私はこれを見つけました。それは答えのようです:
更新(2018年4月11日)
Facebookがトークンの有効期限ページを更新(10/04/2018)
offline_access:アプリケーションがいつでもユーザーに代わって承認済みリクエストを実行できるようにします。デフォルトでは、アプリケーションがアプリケーションをアクティブに使用している場合にのみアプリケーションがユーザーに代わってリクエストを行うことを保証するために、ほとんどのアクセストークンは短時間後に期限切れになります。この許可により、OAuthエンドポイントによって返されるアクセストークンの寿命が長くなります。
要求された許可値。
http://developers.facebook.com/docs/authentication/permissions
UPDATE
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 "refresh token"をメイントークンに埋め込みますか?それはどこにあり、どのように更新するのですか?)が、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とアクセストークンをデータベースのusersテーブルに保存し、ユーザーが「facebookでログイン」ボタンをクリックするたびに、facebook Javascript APIを使用してログインステータスを確認し、応答から接続ステータスを確認するとします。ユーザーがサイトに接続している場合、テーブル内のアクセストークンを更新できます。
短命のアクセストークンを長寿命/無期限の(ページ)トークンと交換するには、これをヒットします。
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
facebookアカウントにログインし、アプリケーション設定を編集します(アカウント->アプリケーション設定->アカウントを使用するアプリケーションの追加の許可)。アクセス許可をオフにします(アプリケーションを使用していないときにデータにアクセスします(offline_access))。次に、アプリケーションにログインすると、faceが新しいトークンを発行します。
基本的に、facebookトークンの有効期限は約1時間です。ただし、「交換」トークンを使用して、長期間有効なトークンを取得できます 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」エイリアスを持つGraph APIは、セッション部分を持つトークンのみで機能します。
トークンの有効期限は正確にはわかりませんが、有効期限は切れます。そうしないと、オフラインアクセス許可を与えるオプションがありません。
とにかく、オフラインのアクセス許可をユーザーに要求するのはやり過ぎです。ニーズに応じて、Webサイトがユーザーのブラウザーで開かれている限り、トークンが有効なままで十分な場合があります。このために、より簡単な解決策があります-iframeを使用して定期的にユーザーを再ログインします。 cookie phpからのfacebook自動再ログイン
私のために働いた...