私は Apache の Oltu ライブラリを使用しており、OAuth2 を使用して Google 経由で認証しようとしています。関連するコードは次のとおりです。
OAuthAuthzResponse oar = OAuthAuthzResponse.oauthCodeAuthzResponse(request);
OAuthClientRequest clientReq = OAuthClientRequest
.tokenProvider(OAuthProviderType.GOOGLE)
.setClientId("<my-client-id>")
.setClientSecret("<my-client-secret>")
.setRedirectURI("https://test.example.com/oauthtest/oauth/google/auth")
.setCode(oar.getCode())
.setGrantType(GrantType.AUTHORIZATION_CODE)
.buildQueryMessage();
OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());
// This call fails with the OAuthProblemException
OAuthAccessTokenResponse oAuthResponse = oAuthClient.accessToken(clientReq,
OAuthJSONAccessTokenResponse.class);
問題なく Facebook 経由で認証できますが、何らかの理由で失敗しています。問題なく OAuthAuthzResponse からコードを取得できるので、元の呼び出しが機能していることはわかっていますが、このフォローアップ呼び出しは失敗しています。
編集: Oltu の使用をあきらめ、HttpClient ライブラリを使用して OAuth ダンスを手動で実行するというより単純なアプローチに固執しました。それは私にとってよりうまく機能し、複数の OAuth プロバイダーに対して確実に認証したい人にはお勧めします。Scribeを使用する必要があったのは Twitter だけでした。