0

Spring Social 経由で Google 資格情報を使用して Web アプリケーションにログインするための Google oAuth2 API を実装しようとしています。

Googleへのクエリは次のとおりです

    googleConnectionFactory = new GoogleConnectionFactory(myKey, mySecret);
    oauthOperations = googleConnectionFactory.getOAuthOperations();
    final String redirectUri = "http://localhost/googleCallback";
    final OAuth2Parameters params = new OAuth2Parameters();
    params.setRedirectUri(redirectUri);
    params.setScope("https://www.googleapis.com/auth/userinfo.profile");
    final String authorizeUrl = oauthOperations.buildAuthorizeUrl(
            GrantType.AUTHORIZATION_CODE, params);
    response.sendRedirect(authorizeUrl);

要求すると、Google のログイン ページに移動します。URLが表示されますscope=https://www.googleapis.com/auth/userinfo.profile

ログインすると、ユーザーは webapp にリダイレクトされ、以下のメソッドが呼び出されます

    final String callbackUrl = "http://localhost/googleCallback";
    final AccessGrant accessGrant = oauthOperations.exchangeForAccess(code,
            callbackUrl, null);
    // THIS CRASHES WITH 401
    final Connection<Google> connection = googleConnectionFactory
            .createConnection(accessGrant);
    // THIS CRASHES TOO WITH 401
    new GoogleTemplate(accessGrant.getAccessToken()).userOperations().getUserProfile();

何か不足していますか?

4

1 に答える 1

3

アクセス トークンを機能させるには、アクセス トークンを API URL に手動で連結する必要がありました。どうやらSpring Socialはクエリの送信中にアクセストークンを設定していません...

LegacyGoogleProfile profile = new GoogleTemplate(
accessGrant.getAccessToken()).getRestTemplate().getForObject(
"https://www.googleapis.com/oauth2/v2/userinfo?access_token="
                    + accessGrant.getAccessToken(),
LegacyGoogleProfile.class);
于 2013-02-04T18:07:31.917 に答える