我正在尝试通过使用Firebase Auth将身份验证添加到我的Web应用程序中,并且我想避免使用Firebase JS SDK,因为它在我看来太大了,并且还可以作为一种练习来更好地了解基础协议
我注意到Firebase Auth SDK不会直接重定向到OAuth端点,然后再重定向。相反,它将重定向到https://my-app.firebaseapp.com/__/auth/handler
,然后将其自身作为回调重定向到OAuth端点,然后再返回到我请求的回调URL。
所以基本上不是:
myapp.com
↓
accounts.google.com/o/oauth2/v2/auth
↓
myapp.com
发生这种情况:
myapp.com
↓
myapp.firebaseapp.com/__/auth/handler
↓
accounts.google.com/o/oauth2/v2/auth
↓
myapp.firebaseapp.com/__/auth/handler
↓
www.myapp.com
我在任何地方都找不到关于此API的任何文档,但我认为它可能是CSRF预防的内部中间件,或者仅仅是一个可以极大地缩小不同联邦身份API之间差距的API。
我对此感兴趣的原因是,如果执行上述一项操作,它可以为我节省一些时间,甚至可以节省金钱,而且我很确定自己可能会从中学习一些新知识(至少希望如此)。
那么https://my-app.firebaseapp.com/__/auth/XXX
端点是用来做什么的,有没有使用它的文档?
答案 0 :(得分:1)
主要是为了易于使用和方便。您只需为所有OAuth提供程序使用一个列入白名单的回调URL(为所有OAuth提供程序仅设置一个重定向URL)。您不必担心托管它,因为Firebase Auth会为您做到这一点。现在,您可以将应用程序托管在用于生产的多个域中,将主机托管在用于开发的本地域中,等等。只要在您的项目中将它们列入白名单,就可以使用您选择的任何OAuth提供程序登录。您可以在项目设置中的一个位置添加和删除列入白名单的域。请注意,过去某些OAuth提供程序曾经只允许使用一个回调URL。这样会绕过该限制。
它也适用于弹出流以及典型的OAuth重定向流。例如,许多开发人员选择在桌面上使用弹出流,并在移动设备上使用重定向。
还要注意重定向流程,它不会通过URL查询字符串将OAuth授权代码等传递回您的网页,而是通过iframe postMessage进行。因此,重定向回原始URL的URL将完全相同,且未经修改。因此,您可以从https://www.example.com/#login开始,然后返回相同的URL以完成登录。
此外,它不需要服务器端代码,通常不需要特快通行证等。也不需要样板代码。
答案 1 :(得分:0)
target_link_libraries(KFilter Eigen3::Eigen)
是使用Firebase身份验证登录用户的URL。
myapp.firebaseapp.com/__/auth/handler
URL使用Google OAuth登录,而不使用Firebase登录。
对于Firebase支持的所有OAuth2提供程序,此流程相同。因此,如果您使用Facebook登录,则会看到accounts.google.com/o/oauth2/v2/auth
。