首页 > 解决方案 > 页面刷新后如何访问 Twitter OAuth 令牌?

问题描述

Twitter Authentication上的 Firebase 文档之后,我们得到了这样的结果:

<script src="https://www.gstatic.com/firebasejs/5.0.4/firebase-app.js">    </script>
<script src="https://www.gstatic.com/firebasejs/5.0.4/firebase-auth.js"></script>
<script>
    // NOTE: pseudo code
    // initialise the app
    firebase.initializeApp({
        apiKey: "API_KEY",
        authDomain: "AUTH_DOMAIN",
        databaseURL: "DATABASE_URL",
        projectId: "PROJECT_ID",
        storageBucket: "STORAGE_BUCKET",
        messagingSenderId: "MESSAGING_SENDER_ID"
    });

    // create Twitter provider
    provider = new firebase.auth.TwitterAuthProvider();

    // auth with popup
    firebase.auth().signInWithPopup(provider).then(function(result) {
    // in theory we could now access the OAuth token so we can make further requests to the Twitter API.
    var token = result.credential.accessToken;
    var secret = result.credential.secret;
});

到目前为止一切都很好。我们可以访问令牌和秘密并向 twitter API 发出任何请求。

此外,在文档中还引用了firebase.auth().currentUser我们可以在页面刷新后调用的方法(例如)。在这个对象中,我们可以访问之前首次登录时获得的一些信息,但是我们无法访问 OAuth 令牌和密钥。

还有关于身份验证状态持久性的进一步文档,其中提到了一些其他方法firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL),我认为这是我需要的。但是我仍然无法访问令牌或秘密。

我是否应该在用户首次登录时将其存储在 cookie 或 localStorage 条目中?这甚至安全吗?任何帮助将不胜感激,因为我不想强迫我的用户每次关闭网站并再次打开它时都登录到 Twitter。

谢谢

标签: firebasefirebase-authentication

解决方案


Firebase Auth 不管理 3rd 方 OAuth 令牌。他们只在登录时返回 OAuth 令牌并在之后丢弃它们。他们不存储这些数据,因此您在登录后将无法获取它们,除非您将它们存储在本地。Firebase Auth 目前只专注于提供 AuthN 解决方案,而不是 AuthZ。


推荐阅读