我想将我的应用从Google帐户登录迁移到联合登录。我的应用需要用户的电子邮件地址才能正常运行。
如果用户使用主要身份提供商(Google,Facebook,Yahoo等),用户是否可以登录但不允许我的应用访问其电子邮件地址?
我可以要求用户提供电子邮件地址,但我需要发送一封电子邮件到该地址进行确认,让用户点击链接等等。我宁愿避免使用该程序。
答案 0 :(得分:1)
通常OpenID Attribute Exchange可用于请求特殊用户属性,例如电子邮件。
Appengine在内部使用AE来请求用户发送电子邮件,但不使用其他参数(名称等)。此外,GAE不会为您提供请求其他参数的选项。
所以你 应该通过联合登录获取用户的电子邮件,但这取决于OpenID提供商,并且不保证他们总是提供它。
因此有多种解决方案:
仅允许某些提供用户电子邮件的OpenID提供商。
如果提供商提供电子邮件,请使用它,否则要求用户提供电子邮件。
或者,您可以改用OAuth 2.0并请求用户个人资料。这可以为您提供详细信息,包括大多数情况下的电子邮件(Google,Facebook),但并不总是(Twitter)。所以除了登录之外你还需要做1.或2.好处是你对Facebook的支持非常普遍。