2012-10-24 42 views
0

我想使用Google的Oauth2 API根据电子邮件地址登录应用程序。考虑到用户可能不知道他们的[email protected]是否由谷歌托管,我如何检查他们的电子邮件地址并通过代码将其重定向到Google Auth?例如,在典型的登录页面上,您已经看到“使用我的Google帐户登录”按钮,但如果用户不知道它是Google帐户,我仍然希望使用OAUTH,即使他们没有点击它。如何判断电子邮件地址是否由Google应用程序托管

我已经考虑过MX记录上的DNS查询,但不知道这是否是最干净/最好的方法。

即典型的DNS查找返回:

mydomain.com  MX preference = 10, mail exchanger = aspmx.l.google.com 
mydomain.com  MX preference = 20, mail exchanger = alt1.aspmx.l.google.com 
mydomain.com  MX preference = 20, mail exchanger = alt2.aspmx.l.google.com 
... 

回答

1

的MX记录nslookup操作很可能是最实际的解决方案,将是相当简单的。

我遇到的问题是,除非您的应用程序专门要求您使用他们的Google电子邮件,否则您可能会排除某些人。我有一个备用的电子邮件地址与我的Google帐户建立,可以用它登录。现在,我敢说大多数用户会使用他们的Google电子邮件帐户,但是您需要为其他情况做好准备。

我的建议是首先使用一个更简单,不赞成使用的方法,如ClientLogin。您可以使用https://www.google.com/accounts/[email protected]&Passwd=password

如果您收到“Error = BadAuthentication”,则验证失败。如果您获得了良好的身份验证,则知道此电子邮件地址与Google帐户相关联,然后您可以使用Oauth2将其登录。我看到的唯一问题是如果用户输入了不正确的密码。我会对所有Google API进行一些研究,看看他们中的任何一个能否告诉你密码不正确,而不仅仅是登录失败,尽管这可能不是出于安全目的。

无论如何,祝你好运。如果你拿出别的东西,让我们更新。

+0

感谢您的评论。我的想法是用户只能输入他们的电子邮件地址。点击“登录”后,服务器将确定如何验证用户。如果它是Google [apps]帐户,那么使用Google OAUTH2(如果它是Yahoo),请使用他们的oauth服务,如果它不是,那么用户只需为我的网站创建一个密码。 –

+1

然后MX记录将是您最好的,但没有确定的方法来确保您包含所有人。让他们点击一个按钮让他们使用该帐户登录会不会更容易?大多数网站都是这样处理的。 – Renegade91127

相关问题