【发布时间】:2021-02-15 09:10:54
【问题描述】:
上下文:
我目前正在开发一个可嵌入的小部件,类似于对讲机或 Hotjar,并且有对用户进行身份验证的需要。到目前为止,我逃脱了 使用 Firebase 身份验证使用无密码身份验证,但用户抱怨说 这是一个高摩擦的过程,他们宁愿根本不这样做。理想 身份验证解决方案是让用户使用他们的 Google 或 Facebook 帐户并通过 OAuth2 进行身份验证。
问题:
Firebase 身份验证限制通过第 3 方身份验证提供程序进行身份验证,如果 用户通过身份验证的域未在授权域中列入白名单 列表。因此,如果用户将代码放在 abc.com 中,并尝试通过 Google 进行身份验证 firebase 拒绝它,因为 abc.com 不在白名单中。白名单 每个客户的领域都是非正统的。我觉得我接近它的方式 是错误的,因为我无法正确地建立一个心理模型来说明这将如何 锻炼。从技术上讲,cookie、会话等毫无意义。
问题:
我将如何提供让用户通过 3rd 进行身份验证的功能 派对身份验证提供者?这在技术上是否可行?
可能的解决方案:
- 在主应用程序中以动态路径(用户所在的网站)托管小部件 将获取小部件的代码)并将此路由呈现为 iframe 客户的网站。 (例如:/widgets/{widgetID} 会有小部件)。我不 真的想这样做,因为 iframe 是一个严重的痛苦,但这听起来像 最可行的。
我想了解更多/更好的解决方案来解决这种特殊情况。 即使它来自不同的云提供商或不同的 身份验证服务。 目标是通过小部件对用户进行身份验证 最好通过 Google 等第三方身份验证提供商。
编辑:这是我目前收到的错误:
widget.js:2 auth/unauthorized-domain This domain (xyz.com) is not authorized to run this operation. Add it to the OAuth redirect domains list in the Firebase console -> Auth section -> Sign in method tab.
【问题讨论】:
-
AFIK domain whitelist on Firebase Auth 仅影响重定向 URL,而不限制可以访问登录的域。您的同意屏幕是否标记为internal only?如果您的应用程序被标记为内部,则此设置会阻止具有其他域的用户使用 google 登录方法。
-
@JanHernandez 说我已将 abc.com 添加到白名单中,我的小部件位于 xyz.com 中,我尝试使用 xyz.com 中的弹出窗口通过 Google 对用户进行身份验证,然后我发现了一个firebase 错误提示该域未经授权,这是什么原因?
-
我将收到的错误消息添加到帖子中
-
您的域
xyz.com是否在Autorized domains中作为错误消息提及,并且您验证了此guide 中提及的域?这两个步骤都是强制性的,以便在不同的域中使用您的 google 登录方法 -
通过未在授权域列表中列出的域对用户进行身份验证不是,这就是重点。
标签: javascript firebase google-cloud-platform oauth-2.0 google-authentication