Образец проекта быстрого запуска загружает файл учетных данных *. json, выполняет процесс авторизации, сохраняет токены в другом файле, а затем использует токен для создания учетных данных. Моя цель состоит в том, чтобы сделать их в отдельных шагах:
- сохранить токены в БД после обмена кодом авторизации для токенов
- получить токены из БД
- проверьте срок действия учетных данных и при необходимости обновите маркер sh и снова сохраните его в БД
- создайте объект учетных данных (без выполнения потока / авторизации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);
}
, которое также не сработало для меня. Итак, мои вопросы:
- мы можем просто создать очень простой объект учетных данных с access_token, refresh_token, expires?
- почему мы должны подключиться к GoogleAuthorizationCodeFlow?
- Каковы минимальные обязательные параметры для действительного объекта учетных данных на основе Java клиентской библиотеки (OAuth 2.0).
Большое спасибо за любые идеи / ввод.