OAuth и Google Plus API - PullRequest
       47

OAuth и Google Plus API

2 голосов
/ 17 октября 2011

Я использую код google-start-project в одном из моих приложений gaelyk.Это отличный код для процесса авторизации OAuth 2.0.В отличие от твиттера, всякий раз, когда приложение запрашивает авторизацию, пользователь должен позволить приложению продолжить работу, и я думаю, что это странно.Есть какие-то ошибки, которые я сделал?

    // Check for an error returned by OAuth
if ( params.error ) {
    response.setContentType("text/plain");
    out.println("There was a problem during authentication: " + error);
    log.severe("There was a problem during authentication: " + error);
    return;
}

// When we're redirected back from the OAuth 2.0 grant page, a code will be supplied in a GET parameter named 'code'

if ( !params.code ) {
    // Now that we have the OAuth 2.0 code, we must exchange it for a token to make API requests.

    // Build the authorization URL
    AuthorizationRequestUrl authorizeUrl = new GoogleAuthorizationRequestUrl(
            CLIENT_ID,
            REDIRECT_URI,
            SCOPES
        );
    authorizeUrl.redirectUri = REDIRECT_URI;
    authorizeUrl.scope = SCOPES;
    String authorizationUrl = authorizeUrl.build();

    log.info("Redirecting browser for OAuth 2.0 authorization to " + authorizationUrl);
    response.sendRedirect(authorizationUrl);
    return;
} else {
    log.info("Exchanging OAuth code for access token using server side call");

    AccessTokenResponse accessTokenResponse = new GoogleAccessTokenRequest.GoogleAuthorizationCodeGrant(
            new NetHttpTransport(),
            new GsonFactory(),
            CLIENT_ID,
            CLIENT_SECRET,
            params.code,
            REDIRECT_URI
        ).execute();

    log.info("Storing authentication token into the session");
    request.session.accessToken = accessTokenResponse.accessToken
    request.session.refreshToken = accessTokenResponse.refreshToken

    //The authentication is all done! Redirect back to the samples index so you can play with them.
    response.sendRedirect("/");
}

1 Ответ

0 голосов
/ 17 октября 2011

Нет, вы все делаете правильно.Я думаю, что Google+ не поддерживает аутентификацию - только авторизация.Какая идея OAuth - авторизовать пользователей, а не аутентифицировать их.Для аутентификации вы можете использовать OpenID .

Кстати, стартовый проект немного сложен, не поддерживает maven и не обновляется своевременно, когда Google добавляет новые методы API.Поэтому я создал этот проект , вы можете проверить, подходит ли он вам.

...