0

https://developers.facebook.com/roadmap/offline-access-removal/を読むたびに、以前よりも混乱します。シナリオ 3 と 4 (サーバー側アプリとクライアント側アプリ) のいくつかの項目について、説明を求めています。

サーバー側アプリの場合、「そのユーザーの有効な 60 日間の access_token が残っている間に呼び出しが行われた場合、この 2 番目の呼び出しから返された access_token は同じであるか変更されている可能性がありますが、いずれの場合も有効期限は時間は新たな 60 日になります。」

  • ここでいう「呼びかけ」とは?
  • 最初の OAuth フローで行われるアクセス トークンの認証コードの交換と同じですか?
  • それとも、トークンを 60 日に更新するために、クライアント側のセクションで説明されているエンドポイント呼び出しですか?
  • 前者の場合、トークンを更新しようとすると、認証コードはどこから来るのでしょうか?
  • 元のコールバックからの認証コードと同じですか、それとも認証フローをもう一度実行する必要がありますか?

要するに、サーバー側のアプリは 60 日間のトークンの寿命を更新し続けることができますか? もしそうなら、どのように?

クライアント側の使用に関して、ドキュメントは、クライアントがアプリケーションのクライアント ID とクライアント シークレットを渡してエンドポイント呼び出しを行う必要があることを示しています。

  • 「クライアント側」の私の解釈は間違っているかもしれませんが、Web ブラウザーで実行される JavaScript ベースのクライアントの観点から考えています。
  • それがFacebookがここで念頭に置いていることである場合、JavaScriptコードはクライアントシークレットについて本当に知っているべきでしょうか? (クライアントに送信された場合、それはあまり秘密にはなりません。)

それでも、60 日間のトークンの寿命を延ばすことはできず、新しい 2 時間のトークンを最初に取得して、60 日間のトークンを取得するために使用する必要があることを示しています。これはドキュメントのクライアント側の部分にありますが、この規則はサーバー側の 60 日間トークンにも適用されますか? そうでない場合は、もう一度質問します。サーバー側で 60 日間のトークンの寿命を更新するにはどうすればよいですか?

最後に、しばらくの間私の頭に焼き付いていた疑問: なぜ Facebook はこの戦略を採用し、OAuth 2 仕様 (Facebook が定義を支援している仕様) で定義されている更新トークンを採用しなかったのか???

編集:ドキュメントをもう一度読み直した後のさらなる考え/質問:

冒頭には、「ユーザーがアプリを再起動するたびに更新できる有効期限が長い」と書かれています。私の最初の仮定は、それを更新する方法は、ドキュメントの後半でエンドポイントを呼び出すことであるということです。ただし、エンドポイントが「クライアント側」の見出しの下に記述されているという事実は別として、「エンドポイントは、有効期間が短いユーザー access_tokens を拡張するためにのみ使用できることに注意してください。エンドポイントは、有効期限を変更または延長することなく、単に同じ access_token をユーザーに返します。」(「長い間」のタイプミスは、FB 自身のドキュメントからのものです。)

さて、そのエンドポイントを使用して有効期限を更新できない場合 (そして、そのエンドポイントで有効期間の長いトークンを更新しようとする私自身の試みがこれを証明しています)、毎回有効期限の長いトークンの有効期限を更新するにはどうすればよいですか?彼らは私のアプリにアクセスしますか?

これがどのように機能するかを理解している人はいませんか?

4

1 に答える 1

0

Facebookのドキュメントを読んだ後(5回目など)、この質問/回答の助けを借りて、これが私の結論です。

ここでいう「呼びかけ」とは?

アクセストークンを取得するためのOAuth呼び出しを参照します。

最初のOAuthフロー中に行われるアクセストークンの認証コードの交換と同じですか?

はい、その流れだと思います。

それとも、トークンを60日に更新するために、クライアント側のセクションで説明されているエンドポイント呼び出しですか?

いいえ、そのエンドポイントは短期間のアクセストークンに対してのみ有効です。

元のコールバックと同じ認証コードですか、それとも認証フローを再度実行する必要がありますか?

承認フローをもう一度実行する必要があります。

アプリにアクセスするたびに、有効期限の長いトークンの有効期限を更新するにはどうすればよいですか?

長期間有効なアクセストークンは、クライアント側のエンドポイントを使用して更新することはできません。ユーザーは、新しいアプリを入手するためにアプリを再承認する必要があります。Facebookのドキュメントによると:

そのユーザーに対して有効な長期ユーザーaccess_tokenがまだ存在する間に呼び出し(OAuth承認呼び出し)が行われた場合、この2番目の呼び出しから返されたユーザーaccess_tokenは同じであるか、変更されている可能性がありますが、いずれの場合も有効期限は有効期限を長く設定してください。

アプリケーションが再承認されると、新しい有効期限が取得されます。Facebookは、新しい長期アクセストークンを返す可能性があるため、それを取得して、その情報を既に持っているものに置き換える必要があります。

結論:ユーザーの介入なしに、長期間有効なアクセストークンを更新する方法はないようです。新しい有効期限/アクセストークンを取得するには、アプリを再承認する必要があります。私の謙虚なアドバイスは、有効期限の数日前に、ユーザーに再承認を提案する必要があるということです。また、このFacebookのハウツーは、期限切れのアクセストークンをチェックするのに役立ちます。

于 2012-04-30T14:55:39.350 に答える