2012-10-24 44 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

相關問題