Java1.8でPlayFramework2.4でWebアプリを開発しています。
その中でpac4jというライブラリを用いてFacebookのOAuth認証をしているのですが、
下記のエラーが出て来てしまい、対象方法がわからず困り果てています。
[TechnicalException: com.github.scribejava.core.exceptions.OAuthConnectionException: There was a problem while creating a connection to the remote service: https://graph.facebook.com/v2.4/me?fields=...]
その他には原因は不明なのですが、
TechnicalException: com.github.scribejava.core.exceptions.OAuthConnectionException
や
Execution exception[[OAuthCredentialsException: State parameter mismatch: session expired or possible threat of cross-site request forger]]
のエラーも出力されています。
これらのエラーが出力される前に一度接続は成功しており、
OAuthから情報の取得はできています。
しかし、その状態で放置して再度認証をかけると上記のエラーを吐き出します。
実際にどのような状態で2つのエラーが出力されて、どのように対処すべきかが検討が付かない状態です。
上記のエラーの時はこのような処理をしなければいけない、というようなことがございましたらご指摘していただきたいです。
下記にOAuthにConnectしているコードを記載致します。
Java
1 @Override 2 public void configure() { 3 4 final String fbId = configuration.getString("fbId"); 5 final String fbSecret = configuration.getString("fbSecret"); 6 final String baseUrl = configuration.getString("baseUrl"); 7 8 // OAuth 9 final FacebookClient facebookClient = new FacebookClient(fbId, fbSecret); 10 final Clients clients = new Clients(baseUrl + "callback", facebookClient); 11 12 final Config config = new Config(clients); 13 config.setClients(clients); 14 15 config.addAuthorizer("admin", new RequireAnyRoleAuthorizer<>("ROLE_ADMIN")); 16 config.addAuthorizer("custom", new CustomAuthorizer()); 17 config.setHttpActionAdapter(new DemoHttpActionAdapter()); 18 bind(Config.class).toInstance(config); 19 20 // set profile timeout to 2h instead of the 1h default 21 PlayCacheStore store = new PlayCacheStore(); 22 store.setProfileTimeout(7200); 23 config.setSessionStore(store); 24 25 // callback 26 final CallbackController callbackController = new CallbackController(); 27 callbackController.setDefaultUrl("/"); 28 callbackController.setMultiProfile(true); 29 bind(CallbackController.class).toInstance(callbackController); 30 31 // logout 32 final ApplicationLogoutController logoutController = new ApplicationLogoutController(); 33 logoutController.setDefaultUrl("/"); 34 bind(ApplicationLogoutController.class).toInstance(logoutController); 35 }
丸投げのような形となってしまいますが、何卒宜しく御願い致します。
あなたの回答
tips
プレビュー