GAE / P:联合登录是否始终包含用户的电子邮件地址?

时间:2012-11-03 16:01:28

标签: python google-app-engine openid federated-identity

我想将我的应用从Google帐户登录迁移到联合登录。我的应用需要用户的电子邮件地址才能正常运行。

如果用户使用主要身份提供商(Google,Facebook,Yahoo等),用户是否可以登录但不允许我的应用访问其电子邮件地址?

我可以要求用户提供电子邮件地址,但我需要发送一封电子邮件到该地址进行确认,让用户点击链接等等。我宁愿避免使用该程序。

1 个答案:

答案 0 :(得分:1)

通常OpenID Attribute Exchange可用于请求特殊用户属性,例如电子邮件。

Appengine在内部使用AE来请求用户发送电子邮件,但不使用其他参数(名称等)。此外,GAE不会为您提供请求其他参数的选项。

所以你 应该通过联合登录获取用户的电子邮件,但这取决于OpenID提供商,并且不保证他们总是提供它。

因此有多种解决方案:

  1. 仅允许某些提供用户电子邮件的OpenID提供商。

  2. 如果提供商提供电子邮件,请使用它,否则要求用户提供电子邮件。

  3. 或者,您可以改用OAuth 2.0并请求用户个人资料。这可以为您提供详细信息,包括大多数情况下的电子邮件(Google,Facebook),但并不总是(Twitter)。所以除了登录之外你还需要做1.或2.好处是你对Facebook的支持非常普遍。