как настроить авторизованный сервисный объект с помощью Google OAuth 2.0

По следующей ссылке есть код, который должен получить доступ к API Календаря Google с использованием OAuth 2.0. К сожалению, он использует клиентскую библиотеку Draft 10, которая явно устарела.

https://developers.google.com/google-apps/calendar/instantiate

Последняя клиентская библиотека — google-api-java-client-1.12.0-beta. Из того, что я могу сделать, многое изменилось со времени клиентской библиотеки Draft 10, и я не могу понять, как переписать этот код для текущей клиентской библиотеки.

Устаревший код показан ниже.

import com.google.api.client.auth.oauth2.draft10.AccessTokenResponse;
import   com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessTokenRequest.GoogleAuthorizationCodeGrant;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAuthorizationRequestUrl;

import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson.JacksonFactory;

import com.google.api.services.calendar.Calendar;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

...

public void setUp() throws IOException {
    HttpTransport httpTransport = new NetHttpTransport();
    JacksonFactory jsonFactory = new JacksonFactory();

    // The clientId and clientSecret are copied from the API Access tab on
    // the Google APIs Console
    String clientId = "YOUR_CLIENT_ID";
    String clientSecret = "YOUR_CLIENT_SECRET";

    // Or your redirect URL for web based applications.
    String redirectUrl = "urn:ietf:wg:oauth:2.0:oob";
    String scope = "https://www.googleapis.com/auth/calendar";

    // Step 1: Authorize -->
    String authorizationUrl = new GoogleAuthorizationRequestUrl(clientId, redirectUrl,   scope)
    .build();

    // Point or redirect your user to the authorizationUrl.
    System.out.println("Go to the following link in your browser:");
    System.out.println(authorizationUrl);

    // Read the authorization code from the standard input stream.
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("What is the authorization code?");
    String code = in.readLine();
    // End of Step 1 <--

   // Step 2: Exchange -->
    AccessTokenResponse response = new GoogleAuthorizationCodeGrant(httpTransport,     jsonFactory,
    clientId, clientSecret, code, redirectUrl).execute();
   // End of Step 2 <--

  GoogleAccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(
    response.accessToken, httpTransport, jsonFactory, clientId, clientSecret,
    response.refreshToken);

  Calendar service = new Calendar(httpTransport, accessProtectedResource, jsonFactory);
  service.setApplicationName("YOUR_APPLICATION_NAME");
   ...
}
...

Кто-нибудь может сказать, как переписать этот код, чтобы он работал с текущей клиентской библиотекой?


person Laurence    schedule 13.11.2012    source источник


Ответы (1)


Вы можете ознакомиться с актуальной документацией API Google Диска:

https://developers.google.com/drive/credentials

Тогда не составит труда заменить область Диска областью Календаря и создать экземпляр правильного класса Календаря для службы вместо объекта службы Диска.

Если такая ситуация повторится, лучше всего убедиться, что вы можете найти последнюю версию примеров кода, — это посмотреть непосредственно на веб-сайте клиентской библиотеки API Google для Java. Вы можете взглянуть на его вики об аутентификации, но также взгляните на примеры приложений которые они компилируют и работают с последней версией библиотеки (просто иногда сложнее поддерживать актуальность всех документов)

person Nicolas Garnier    schedule 14.11.2012
comment
Спасибо Nivco за ваш ответ, вы дали мне много информации для изучения и размышления. - person Laurence; 22.11.2012