Получить токен доступа текущего пользователя без диалога выбора пользователя - PullRequest
0 голосов
/ 13 декабря 2018

Я использую аутентификацию Firebase с веб-API в сочетании с API-интерфейсами Google для доступа к Google Drive пользователя, поэтому мне нужен маркер доступа пользователя Firebase (через GoogleAuthProvider), чтобы передать его в Google API.Я делаю это, извлекая его из результата signInWithPopup:

const result = await firebase.auth().signInWithPopup(provider);
const { credential } = result;
if (credential === null) return undefined;
if (!hasOwnProperty(credential, "accessToken")) return undefined;
const accessToken = checkString(credential.accessToken);    

. Это прекрасно работает, но имеет нежелательный побочный эффект: если пользователь уже вошел в систему, он все равно будет отображатьвсплывающее окно и позволить пользователю выбрать, хотят ли они использовать свою текущую учетную запись или выбрать другую.Я хотел бы просто получить токен доступа, не требуя, чтобы они проходили через этот инструмент выбора.

Я пытался

const result = user.reauthenticateWithPopup(provider);

, где user - текущий пользователь Firebase, но он по-прежнему отображаетсявсплывающее окно выбора.

Другой подход заключался в следующем:

const cred = firebase.auth.GoogleAuthProvider.credential(await user.getIdToken());
const result = await user.reauthenticateAndRetrieveDataWithCredential(cred);

Этот странный сбой с 400 и сообщением:

Invalid id_token in IdP response: eyJhbGci...

Есть ли другой способ, которым ямне не хватает токена доступа?

...