我正在使用Firebase对GitHub,Twitter和Facebook进行身份验证,我知道我可以在进行身份验证时获取提供者访问令牌
firebase.auth().signInWithPopup(provider).then(function(result) {
// This gives you a Facebook Access Token. You can use it to access the Facebook API.
var token = result.credential.accessToken;
// The signed-in user info.
var user = result.user;
// ...
}
然而,在使用React Router 4进行身份验证后,我将用户重定向到安全区域,在这个安全区域我需要检索提供者访问令牌,以便我可以访问GitHub,Twitter和Facebook API(对于Twitter我也需要获得“秘密”)串) .
我可以在安全区域中设置一个身份验证状态观察器(下面)以获取基本用户详细信息,甚至是用户已链接的提供者,但是这不会为我提供连接到相应提供者API所需的访问令牌
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var displayName = user.displayName;
var providerData = user.providerData;
// ...
}
我应该提一下,我允许用户链接多个身份验证提供程序,因此我需要所有访问令牌(https://firebase.google.com/docs/auth/web/account-linking)
谢谢
1 回答
很遗憾,Firebase Auth不会为用户管理OAuth访问令牌 . OAuth通过弹出/重定向登录后,将返回访问令牌,但之后不会再返回新的访问令牌 . 如果您需要此功能,则需要使用Facebook / Google等原生SDK登录用户,然后使用OAuth凭证登录FireInwithCredential . 这些SDK将为您管理OAuth令牌,并在到期时使用新的访问令牌更新您 . 如果您认为这是Firebase应支持的重要功能,请提出您的案例并提交功能请求 . 您可以使用Firebase论坛:https://groups.google.com/forum/#!forum/firebase-talk或通过Firebase官方支持渠道申请 .