简单的场景,假设用户有两个电子邮件地址:
personal.email@gmail.com
work.email@somecompany.com
我想验证这两个电子邮件地址。文档中的所有示例都涉及为每个用户帐户存储一个 oauth token ,例如:
class CredentialsModel(models.Model):
id = models.ForeignKey(User, primary_key=True)
credential = CredentialsField()
因此,如果我网站上的单个用户帐户有多个关联的电子邮件地址,我是否仍会为该用户存储一个 oauth2 凭据?或者我是否需要使用电子邮件地址作为主键而不是使用用户 ID 作为外键?现在我为每个电子邮件地址存储不同的凭据,尽管当我查看数据库时,我的两个电子邮件地址的凭据看起来相同。我不确定我是不是做错了什么。
其次,我意识到这是一个基本问题,但是当用户授权一个电子邮件地址时,我怎么知道他们授权了哪个电子邮件地址?我正在使用 google-api-python-client 进行所有验证,但我在 python 文档中没有看到任何关于如何执行此操作的内容。
最佳答案
OAuth 从不 完全“接受”用户身份验证。由服务提供商来担心。 OAuth 所提供的只是消费者(在本例中为您的应用程序)可以访问用户授权的资源(在成功验证服务提供商本身提供的服务提供商之后)。
OAuth 2 凭据必须链接到通过 oauth 2 端点注册到服务提供商的应用程序。
Secondly, I realize this is a basic question, but when a user authorizes an email address, how do I know which email address they have authorized?
你不知道。服务提供商进行身份验证。这是为了防止任何第 3 方机制进行第 3 方身份验证。您的应用程序必须只关心获取访问 token (它会过期)以及它可以访问哪些服务。收到访问 token 是用户已成功验证并已授权您的应用程序获取 protected 资源的“保证”。
关于python - 如果用户有多个电子邮件地址,我是否需要存储多个 oauth token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27895442/