如何关联不同的 Oauth2 登录?

问题描述

我有一个带有 2 个登录选项的 web 应用程序:使用您的 Github 帐户或您的 GitLab 帐户。

目前,这两个登录被视为不同的帐户:使用 Github 登录,仅查看您的 Github 存储库;使用 GitLab 登录,仅查看您的 GitLab 内容。

但是,我注意到 Coveralls.io 等应用程序设法链接了登录信息:如果您使用 Github 和 GitLab 登录,那么您将看到所有存储库(Github GitLab 存储库,无论如何您选择的未来登录选项)。

那么,Coveralls 如何知道它是同一个用户?

在 StackOverflow 中也一样:如果我最初使用 Github 进行身份验证,则会获得一个帐户,如果稍后我使用 GMail 进行身份验证,则它是同一个帐户。这是如何实现的?

我能想到的唯一选择是在不同的 Oauth 提供商处注册的电子邮件地址:如果相同,则将不同的登录名连接到同一帐户。

解决方法

这是可行的,因为相关应用将通用用户帐户与与每个 OAuth 提供者相关的身份相关联。

您可以在 https://jumpstartrails.com/(由 https://gorails.com/ 的创建者 Chris Oliver 创建的 SaaS 应用程序)中看到一个示例。该应用程序实现了这种模式。

此外,Chris 的 GoRails 视频可以解释该方法:

使用 Omniauth 登录多个 OAuth 提供商: https://gorails.com/episodes/login-with-multiple-oauth-providers?autoplay=1

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...