Google API Доступ к Gmail из Java с помощью id_token из JavaScript - PullRequest
0 голосов
/ 19 октября 2018

Я использую gapi для получения googleUser.getAuthResponse().id_token в JavaScript через OAuth2, который я отправляю на мой сервер.Затем я хочу использовать Java API для доступа к Gmail API для отображения сообщений в учетной записи, но я получаю следующую ошибку при попытке получить к ней доступ:

[error] com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
[error] {
[error]   "code" : 401,
[error]   "errors" : [ {
[error]     "domain" : "global",
[error]     "location" : "Authorization",
[error]     "locationType" : "header",
[error]     "message" : "Invalid Credentials",
[error]     "reason" : "authError"
[error]   } ],
[error]   "message" : "Invalid Credentials"
[error] }

Простите код Scala,но это то, что я вызываю:

val gmail = new Gmail.Builder(transport, jsonFactory, credential)
        .setApplicationName("myapp")
        .build()
val response = gmail.users().messages().list(userId).execute()

userId Я получаю из поиска профиля Java API (который прекрасно работает), он просто пытается получить доступ к экземпляру Gmail, который являетсядоставляет мне неприятностиЯ искал, но мне трудно найти какую-либо информацию об этой конкретной ситуации.

1 Ответ

0 голосов
/ 23 октября 2018

После долгих копаний и плохой документации Google я наконец понял, что использую user.getAuthResponse().id_token, когда мне следовало использовать user.getAuthResponse().access_token.Раздражает, что это нигде не документировано, но, надеюсь, это поможет кому-то еще в будущем.

Создание GoogleCredential было так просто, как:

private val credential = new GoogleCredential.Builder().build().setAccessToken(accessToken)
...