python - 如果用户有多个电子邮件地址,我是否需要存储多个 oauth token ?

标签 python oauth

简单的场景,假设用户有两个电子邮件地址:

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/

相关文章:

python - Flask应用程序中的Opencv视频

ruby - 从 Ruby 控制台测试 Ruby on Rails OAuth API

java - 使用 Evernote 进行 OAuth 身份验证(使用 Java+Signpost)

java - 如何使用 java 创建 oAuth 请求?

ssl - Google oauth SSL 证书错误

node.js - Node js请求的授权问题

python - 带 Pyaudio 的 MP3

python - 如何使 ImageOps.fit 不裁剪?

python - 如何使用 python 套接字模块向远程计算机发送消息?

python - 从字符串中的数字中拆分字母