Изменение цели Firebase с расширением Chrome приводит к авторизации/недействительным учетным данным

Ранее я настроил и выполнил следующие шаги, и все заработало: https://firebaseopensource.com/projects/firebase/quickstart-js/auth/chromextension/readme/#license

Но клонирование этого расширения, но с другим, другим firebase instance и OAuth/key setup, я пытался выполнить шаги по крайней мере 3 раза, но каждый раз, когда это не удается на последнем шаге, вход в систему (хотя экран согласия работает)

  • Загрузите новое фиктивное расширение (без key поле в manifest.json) (Но это точно такой же код, как и рабочий)
  • Получить Chrome Extension ID, и , нет проблем
  • Создать с помощью Extension ID, настроенный экран согласия, нет проблем, экран появляется, и я могу перейти
  • Добавлять OAuth & Public Key к manifest.json
  • Сделать еще OAuth Client ID? (Я думаю, что это повторяющийся шаг, потому что Client IDя должен использовать? и, на самом деле, белый список необязателен)
  • Использовать chrome.identity чтобы получить токен OAuth:
      export function startAuth(interactive) { 
  // Request an OAuth token from the Chrome Identity API.
  chrome.identity
    .getAuthToken({ interactive: !!interactive }, (token) => {
      if (chrome.runtime && !interactive) { 
        console.error('It was not possible to get a token programmatically.');
      }

      else if (token) {
        // Authorize Firebase with the OAuth Access Token.
        const credential = firebase.auth.GoogleAuthProvider
          .credential(null, token);

        firebase.auth()
          .signInWithCredential(credential)
          .catch((error) => {
            // The OAuth token might have been invalidated. Lets' remove it from cache.
            if (error.code === 'auth/invalid-credential') {

              chrome.identity
                .removeCachedAuthToken({ token }, () => {
                  startAuth(interactive);
                });
            }
          });
      }

      else {
        console.error('The OAuth Token was null');
      }
    });
}

Примечание. Этот код работает с другим идентификатором расширения/OAuth/ключом, поэтому сам код не может быть проблемой.

Между ними не так много изменений, это действительно ExtensionID, URL-адрес идентификатора клиента OAuth и открытый ключ.

Я выполнил шаги 3 раза, безрезультатно, каждый раз я получаю сообщение об ошибке auth/invalid-credential. я получаю _tokenхотя, но этот токен не будет аутентифицироваться. Как узнать, почему это?

Он пытается опубликовать сообщение по этому адресу и возвращает ошибку 400:

      POST:  https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=xxxxx

Ошибка: INVALID_IDP_RESPONSE : Invalid Idp Response: access_token audience is not for this project

Мой вывод

Должно быть что-то изменено в том, как настроить это, даже если оно работает с другими учетными данными.

1 ответ

Проблема заключалась в том, что я не создал OAuth в том же проекте в облачной консоли Google, что и проект firebase...