создать учетные данные с параметрами access_token / refresh_token / expires_in без использования потока / installApp - PullRequest
0 голосов
/ 06 февраля 2020

Образец проекта быстрого запуска загружает файл учетных данных *. json, выполняет процесс авторизации, сохраняет токены в другом файле, а затем использует токен для создания учетных данных. Моя цель состоит в том, чтобы сделать их в отдельных шагах:

  1. сохранить токены в БД после обмена кодом авторизации для токенов
  2. получить токены из БД
  3. проверьте срок действия учетных данных и при необходимости обновите маркер sh и снова сохраните его в БД
  4. создайте объект учетных данных (без выполнения потока / авторизацииInstalledApp)

Итак, я попробовал Чтобы создать учетные данные с помощью параметров, связанных с токеном, выполните следующие действия:

TokenResponse tokens = new TokenResponse();
String token = "xxxxxxxxxxxxxxx$$$$$$$$$";
tokens.setAccessToken(token);
tokens.setTokenType("bearer");
tokens.setExpiresInSeconds(3500L);
Credential credential = new 
Credential(BearerToken.authorizationHeaderAccessMethod()).setFromTokenResponse(tokens);

Учетные данные были созданы, но вызов API завершился неудачно:

401 Unauthorized {"code": 401, " ошибки ": [{" domain ":" global "," location ":" Authorization "," locationType ":" header "," message ":" Invalid Credentials "," reason ":" authError "}]," message ":" Неверные учетные данные "}

Я также попробовал другое предложение в java do c:

public static Credential createCredentialWithRefreshToken(
      HttpTransport transport, JsonFactory jsonFactory, TokenResponse tokenResponse) {
    return new Credential.Builder(BearerToken.authorizationHeaderAccessMethod()).setTransport(
    transport)
    .setJsonFactory(jsonFactory)
    .setTokenServerUrl(
        new GenericUrl("https://server.example.com/token"))
    .setClientAuthentication(new BasicAuthentication("s6BhdRkqt3", "7Fjfp0ZBr1KtDRbnfVdmIw"))
    .build()
    .setFromTokenResponse(tokenResponse);
 }

, которое также не сработало для меня. Итак, мои вопросы:

  1. мы можем просто создать очень простой объект учетных данных с access_token, refresh_token, expires?
  2. почему мы должны подключиться к GoogleAuthorizationCodeFlow?
  3. Каковы минимальные обязательные параметры для действительного объекта учетных данных на основе Java клиентской библиотеки (OAuth 2.0).

Большое спасибо за любые идеи / ввод.

...