有効期限のないアクセストークンの終焉が迫っているので、誰かが私のかなりユニークな問題を助けてくれることを願っています.
https://developers.facebook.com/roadmap/offline-access-removal/に関するすべてのドキュメントを読みました
そして、私のアプリケーションはまったく別のカテゴリに分類されると思います。Facebook にメッセージを投稿することはめったにありません (数年かかる可能性があります) が、投稿は非常に重要です。これらの投稿は、Tomcat を実行している JVM 内で開始されますが、必ずしもユーザーの操作によって開始されるとは限りません。
ユーザーが自分のバージョンのアプリケーションをインストールすると、ブラウザを使用して通常のサーバー側認証プロセスを実行します。
歴史的に、私のアプリケーションは、生成された (有効期限が切れていない) アクセス トークンをデータベースに保存します。現在、offline_access の廃止により、このアクセス トークンは有効期間が短いトークンになりました。
したがって、上記の 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 日トークンを保存します。
これが冗長な投稿である場合は申し訳ありません。フォローアップの質問をせずに誰かが助けてくれるように、すべての情報を公開しようとしました。