さて、このトピックにはかなりの混乱があるようで、明確な答えを得るのに苦労しているので、ここに私の質問があります...
サーバーサイド フローを使用して Web アプリのアクセス トークンを取得しています。以前は offline_access を使用していましたが、現在は減価償却されているため、次の状況でトークンを更新する方法が必要です。
1) ユーザーがFBパスワードを変更 2) トークンは自然に失効
私のアプリは結果をユーザーの FB ウォールに投稿するため、更新はサーバーによって自動的に行われる必要があります (Cookie や OAuth ダイアログはありません)。
ここで説明されている新しいエンドポイントを使用できると思いました
http://developers.facebook.com/roadmap/offline-access-removal/
、次のコード (Java):
public static String refreshFBAccessToken(String existingAccessToken)
throws Exception{
//Currently not working
String refreshUrl = "https://graph.facebook.com/oauth/access_token?
client_id="+FacebookApp.appId+"
&client_secret="+FacebookApp.appSecret+"
&grant_type=fb_exchange_token
&fb_exchange_token="+existingAccessToken;
URL url = new URL(refreshUrl);
URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(),
url.getQuery(), null);
String result = readURL(uri.toURL());
String[] resultSplited = result.split("&");
return resultSplited[0].split("=")[1];
}
しかし、これは機能していないようです (応答 400 が返されます)。ドキュメントを読み直すと、このエンドポイントはクライアント側フローのみを使用して取得したトークンに使用されているようです...
では、サーバー側の流れはどうでしょうか....?
上記のアプローチが正しいか、別の方法があるかを誰かに教えてもらえますか?
どうもありがとう