【发布时间】:2017-12-13 13:02:00
【问题描述】:
我正在使用 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)
谢谢
【问题讨论】:
-
嘿.. 那么是否可以从 Firebase 获取提供商特定的 accessToken?
-
@iMDroid 是的,您可以获得访问令牌,但只有在用户进行身份验证时(firebase.google.com/docs/auth/web/…)。用户通过身份验证后,您将无法检索访问令牌。我最终做的是将访问令牌保存到 Firebase 数据库,然后在我需要连接到 Twitter API 时读取它们。看看我如何在这里进行身份验证github.com/esausilva/profile-updater/blob/…
-
好的..感谢您的帮助:)
标签: javascript reactjs firebase firebase-authentication