Программная аутентификация в Google с помощью OAuth2

Как я могу программно аутентифицироваться в Google? Теперь, когда ClientLogin (https://developers.google.com/accounts/docs/AuthForInstalledApps) устарело, как мы можем выполнить программную аутентификацию в Google с помощью OAuth2?

С помощью ClientLogin мы могли бы выполнить публикацию в https://www.google.com/accounts/ClientLogin с параметрами электронной почты и пароля и получить токен аутентификации.

С OAuth2 я не могу найти решение!

#

Мое приложение является фоновым процессом Java. Я увидел по этой ссылке: developments.google.com/accounts/docs/OAuth2InstalledApp#refresh, как получить новый токен доступа, используя обновленный токен.

Проблема в том, что я не могу найти пример Java о том, как создать экземпляр объекта Analytics (например) для выполнения запроса, когда у меня есть новый действительный токен доступа

Это мой код, который возвращает 401 Invalid учетные данные при вызове «выполнить ()»:

public class Test {

static final String client_id = "MY_CLIENT_ID";
static final String client_secret = "MY_SECRET";
static final String appName = "MY_APP";

private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
private static final JsonFactory JSON_FACTORY = new JacksonFactory();

static String access_token = "xxxx";
static String refreshToken = "yyyyy";

public static void main (String args[]){

    try {

        GoogleCredential credential = 
            new GoogleCredential.Builder()
                .setTransport(HTTP_TRANSPORT)
                .setJsonFactory(JSON_FACTORY)
                .setClientSecrets(client_id, client_secret).build();
        credential.setAccessToken(access_token);
        credential.setRefreshToken(refreshToken);
        //GoogleCredential
        Analytics analytics = Analytics.builder(HTTP_TRANSPORT, JSON_FACTORY)
            .setApplicationName(appName)
            .setHttpRequestInitializer(credential)
            .build();

        Accounts accounts = analytics.management().accounts().list().execute();
    } catch (Exception e) {
        e.printStackTrace();
    } 
}

В чем проблема?

26
задан Matt C 2 January 2016 в 00:58
поделиться