Сбой внутренней библиотеки Google OAuth со ссылкой на аккаунт - PullRequest
0 голосов
/ 09 июля 2020

Я использую Actions Builder + неявную привязку учетных записей OAuth + выполнение встроенного веб-перехватчика. Привязка аккаунта работает. Вот последовательность действий:

  1. Вызов
  2. Открыть веб-страницу входа для авторизации oAuth
  3. Перенаправить на https://oauth-redirect.googleusercontent.com/r/... с токеном
  4. Аккаунт привязан; ко всем запросам выполнения веб-перехватчиков прикреплен токен
  5. Все запросы выполнения завершаются неудачно с библиотекой Google oAuth cra sh

Независимо от формата генерируемого мной токена доступа, простая строка или JWT, каждый последующий запрос к веб-перехватчику выполнения с переданным токеном доступа автоматически завершается ошибкой:

Error: Wrong number of segments in token: Bearer 12345abcde
    at OAuth2Client.verifySignedJwtWithCertsAsync (/workspace/node_modules/google-auth-library/build/src/auth/oauth2client.js:535:19)
    at OAuth2Client.verifyIdTokenAsync (/workspace/node_modules/google-auth-library/build/src/auth/oauth2client.js:401:34)
    at process._tickCallback (internal/process/next_tick.js:68:7)

С токеном в формате JWT:

SyntaxError: Can't parse token envelope: Bearer 12345abcdeJWTtoken: Unexpected token  in JSON at position 0
    at JSON.parse (<anonymous>)
    at OAuth2Client.verifySignedJwtWithCertsAsync (/workspace/node_modules/google-auth-library/build/src/auth/oauth2client.js:542:29)

Пример значения «webhookResponse» в тесте действий консоль:

Unsuccessful webhook call due to client issue: Error querying agent endpoint. State: URL_UNREACHABLE, reason: UNREACHABLE_5xx.

{
  "responseJson": {
    "error": "Wrong number of segments in token: Bearer abcde12345"
  }
}

пакет. json:

{
  "name": "ActionsOnGoogleFulfillment",
  "version": "0.0.0",
  "private": true,
  "description": "Actions on Google fulfillment",
  "engines": {
    "node": "10"
  },
  "main": "index.js",
  "dependencies": {
    "@assistant/conversation": "^3.0.1",
    "firebase-admin": "^8.13.0",
    "firebase-functions": "^3.7.0"
  }
}

Что вы должны здесь делать?

1 Ответ

0 голосов
/ 09 июля 2020

Обнаружил проблему.

Включение clientId в конструктор, например const app = conversation({clientId: CLIENT_ID}) заставляет процессор аутентификации Google обрабатывать заголовок Authorization как токен GSI, несмотря ни на что, поэтому синтаксический анализ завершается неудачно.

Исправлено удаление clientId из конструктора.

...