我正在为我的firebase应用程序使用自定义令牌身份验证。
我需要从我的服务器获取令牌,其中用户需要先登录。我正在考虑使用弹出窗口。
但是如何通过弹出窗口将检索到的令牌传递给开启者(父窗口)?
答案 0 :(得分:1)
Firebase身份验证使用弹出窗口或重定向进行OAuth身份验证,因为用户的浏览器需要发送给第三方OAuth提供商(Google,Facebook,Twitter等)为了进行身份验证。
如果您有自己的身份验证系统,最简单和最简单的方法是在页面上使用表单输入,通过XHR与服务器通信,然后更新UI以反映用户现在已经过身份验证。< / p>
也就是说,如果你开始使用新的浏览器窗口/弹出窗口进行身份验证,请查看Mozilla的开源库github.com/mozilla/winchan,它可以在主页和pop之间进行通信 - 相当容易。
答案 1 :(得分:0)
您可以为自定义 Firebase 身份验证创建一个弹出窗口,如本示例中针对 Spotify OAuth 所述:https://github.com/firebase/functions-samples/blob/master/spotify-auth/public/popup.html
您也可以在主应用程序窗口中使用 firebase.auth().onAuthStateChanged()
来监听 Firebase 用户更改事件,如示例中所示:https://github.com/firebase/functions-samples/blob/86f9e135af344b2e9268c055a9a1bcb00a7e7c0d/spotify-auth/public/main.js#L36
它是如何工作的?摘自readme:
<块引用>./popup.html 接收自定义身份验证令牌和其他数据 从 AJAX 请求到令牌函数并使用它来更新 用户的配置文件,将访问令牌保存到数据库中,进行身份验证 Firebase 中的用户,然后关闭弹出窗口。此时主要 页面将通过 Firebase Auth State 观察者检测登录 并显示登录的用户信息。