我只是用Instagram和Firebase用无服务器框架重新实现了OAUTH2。我从这个项目中汲取灵感:
https://github.com/firebase/custom-auth-samples/tree/master/instagram
我在公共S3存储桶上托管主页index.html
。
我的API函数很好,我收到的内容与我上面的存储库的本地测试完全相同。我拥有我的应用程序所需的所有令牌(Instagram令牌,firebase令牌......),因此从服务器角度来看它看起来很不错。
最后一个调用是返回这段HTML:
<script src="https://www.gstatic.com/firebasejs/3.6.0/firebase.js" </script>
<script>
var token = 'firebase_token_yyy';
var config = {
apiKey: 'firebase_api_key_xxx'
};
var app = firebase.initializeApp(config);
app.auth().signInWithCustomToken(token).then(function() {
window.close();
});
</script>
这样做很好,因为它正在关闭记录的弹出窗口。
但是,onAuthStateChanged
未被触发(https://github.com/firebase/custom-auth-samples/blob/master/instagram/public/main.js#L41)。
这很奇怪,因为main.js
代码在打开index.html
时已初步初始化。
我还尝试过运行一个简单的手动Web服务器:相同的行为。
它与AWS S3有关吗? 我也认为浏览器会在窗口之间传播状态吗?
没有javascript错误,主机名已列入Firebase Oauth的白名单。