0

有効期限のないアクセストークンの終焉が迫っているので、誰かが私のかなりユニークな問題を助けてくれることを願っています.

https://developers.facebook.com/roadmap/offline-access-removal/に関するすべてのドキュメントを読みました

そして、私のアプリケーションはまったく別のカテゴリに分類されると思います。Facebook にメッセージを投稿することはめったにありません (数年かかる可能性があります) が、投稿は非常に重要です。これらの投稿は、Tomcat を実行している JVM 内で開始されますが、必ずしもユーザーの操作によって開始されるとは限りません。

ユーザーが自分のバージョンのアプリケーションをインストールすると、ブラウザを使用して通常のサーバー側認証プロセスを実行します。

https://graph.facebook.com/oauth/authorize?client_id=APP_ID&scope=publish_stream,manage_pages,offline_access&response_type=トークン&redirect_uri=MY_REDIRECT_URL

歴史的に、私のアプリケーションは、生成された (有効期限が切れていない) アクセス トークンをデータベースに保存します。現在、offline_access の廃止により、このアクセス トークンは有効期間が短いトークンになりました。

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

したがって、上記の URL にアクセスして、返された長期アクセス トークンを保存できます。ここまでは順調ですね。ここに問題があります....

前述のように、私のアプリケーションは何ヶ月も何年も Facebook に投稿しようとしないかもしれません (つまり、60 日間のトークンの有効期限が切れた後)。ドキュメントによると、fb_exchange_token オプションを使用して、有効期間の短いトークンを 60 日間のトークンと交換できますが、有効期限が近づいている 60 日間のトークンを新しい 60 日間のトークンと交換することはできません。そして、新しい短命のトークンを取得する唯一の方法は、ユーザーにログインして生成させることです。それが私の問題です。私が理解しているように、ユーザーが再度ログインしないと、新しい短命のトークンを取得できません。

より理解しやすい類推を考えようとしましたが、これが私が思いついた最高のものです。

90 日ごとに cron で実行される bash スクリプトを使用して、企業の Facebook ページにメッセージを投稿し、四半期レポートが利用可能であることを発表するとします。新しい非推奨の offline_access の世界で、この cron ジョブを機能させるにはどうすればよいですか? 私が保存する唯一の顧客固有のデータは 60 日間のアクセス トークンであり、bash スクリプトにはユーザー インターフェイスがありません。

私が最もハックな解決策を実行し、アプリケーションをインストールした人に、インストールの一部として fb ユーザー名とパスワードを含めるように要求した場合、それはどのように機能しますか. グラフ api にユーザー名とパスワードを提供し、HttpClient のようなものでログインと oauth クリック ストリームをシミュレートする方法はありますか?

理想的には、60 日間のトークンを新しい 60 日間のトークンに交換できる fb_exchange_token オプションのようなものがあれば、Facebook を 1 日 1 回サンプリングして、60 日間のトークンの有効期限がどれだけ近づいているか、期限内に到達したかを確認するものを書くことができます。 1 日か 2 日は新しい fb_exchange_token を実行し、新しい 60 日トークンを保存します。

これが冗長な投稿である場合は申し訳ありません。フォローアップの質問をせずに誰かが助けてくれるように、すべての情報を公開しようとしました。

4

1 に答える 1

1

私が理解しているように、ユーザーが再度ログインしないと、新しい短命のトークンを取得できません。

まあ、それがoffline_accessを削除する要点です...</p >

90 日ごとに cron で実行される bash スクリプトを使用して、企業の Facebook ページにメッセージを投稿し、四半期レポートが利用可能であることを発表するとします。新しい非推奨の offline_access の世界で、この cron ジョブを機能させるにはどうすればよいですか?

ユーザーアクセストークンの代わりにページ アクセス トークンを使用するページアクセス トークンは期限切れになりません (トークンを取得したユーザーがパスワードを変更したり、プラットフォームを完全に離れたりしない限り)。

私が最もハックな解決策を実行し、アプリケーションをインストールした人に、インストールの一部として fb ユーザー名とパスワードを含めるように要求した場合、それはどのように機能しますか.

これは、FB プラットフォーム ポリシーの明らかな違反です。あなたはそれをすることさえ考えるべきではありません。

理想的には、60 日間のトークンを新しい 60 日間のトークンに交換できる fb_exchange_token オプションのようなものがあれば […]

繰り返しますが、Facebook がそれを可能にしたいのであれば、そもそも offline_access を削除する必要はありませんでした。

于 2012-06-28T09:24:54.207 に答える