我之前已经设置并遵循了这些步骤,并让它工作: https ://firebaseopensource.com/projects/firebase/quickstart-js/auth/chromextension/readme/#license
但是克隆这个扩展,但使用不同的Extension ID
、不同的firebase instance
和OAuth/key
设置,我尝试至少 3 次单独执行这些步骤,但每次在最后一步失败时,登录(虽然同意屏幕有效)
- 上传一个新的虚拟扩展(
key
manifest.json 中没有字段)(但它与工作的代码完全相同) - 得到
Chrome Extension ID
, 和Public Key
, 没问题 OAuth Client ID
使用已配置的同意屏幕创建Extension ID
,没问题,屏幕显示,我可以点击通过- 添加
OAuth
&Public Key
到manifest.json
- 再做一个
OAuth Client ID
?(我认为这是一个重复的步骤,因为Client ID
我应该使用哪个?并且 afaik 白名单是可选的) - 用于
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');
}
});
}
注意:此代码与另一个 extensionID/OAuth/key 一起使用,因此代码本身不会是问题。
它们之间没有太大的变化,实际上是 ExtensionID、OAuth 客户端 ID url 和公钥。
我已经按照这些步骤进行了 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
我的结论
即使使用不同的凭据,如何设置也必须有所改变