1. Facebook の API バージョンを明示的に指定するにはどうすればよいですか?
設定で明示的に指定できます。
facebook4j.properties で指定する場合
facebook4j.properties に以下を追加してください。
restBaseURL=https://graph.facebook.com/v2.0/
ConfigurationBuilder で指定する場合
ConfigurationBuilder で以下のようにして指定してください。
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
:
.setRestBaseURL("https://graph.facebook.com/v2.0/"); // <- set v2.0
FacebookFactory ff = new FacebookFactory(cb.build());
Facebook facebook = ff.getInstance();
システムプロパティ で指定する場合
システムプロパティから設定する場合はプロパティ名の先頭に “facebook4j.” をつける必要があることに注意してください。
$ java -Dfacebook4j.debug=true
:
-Dfacebook4j.restBaseURL=https://graph.facebook.com/v2.0/
:
2. アクセストークンの有効期限を延長するにはどうすればよいですか?
Facebook のドキュメント: Expiration and Extension of Access Tokens
以下のようにして、短命のアクセストークンの有効期限を延長することができます:
AccessToken extendedToken = facebook.extendTokenExpiration(shortLivedToken);
3. 再認証するには? {reauthentication}
Facebook のドキュメント: Re-Authentication
以下のようにして、再認証のための URL を取得できます:
String reAuthUrl = facebook.getOAuthReAuthenticationURL(callbackURL, "random_nonce");
2nd argument is ‘auth_nonce’ parameter that is a completely arbitrary alphanumeric code that your app generates. It can be used to provide replay protection. You should check this nonce hasn’t been used before.
4. パーミッションの認可を問い合わせるには?
Facebook のドキュメント: Re-asking for Declined Permissions
Facebook ログインのベストプラクティスとしては、同時に読み取り権限および公開の権限を要求しないことです。ログインした後でも必要な権限は都度求めることができます。
AuthOption authOption = new DialogAuthOption().authType(AuthType.REREQUEST);
String url = facebook.getOAuthAuthorizationURL(callbackURL, authOption);