在没有用户选择器对话框的情况下获取当前用户的访问令牌

时间:2018-12-13 01:35:47

标签: javascript firebase oauth google-api firebase-authentication

我正在将Firebase身份验证与Web API结合使用,并将Google API与Google API结合使用,以访问用户的Google云端硬盘,因此我需要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...

我还有其他方法无法获得访问令牌吗?

0 个答案:

没有答案