代码之家  ›  专栏  ›  技术社区  ›  FernandoEscher

如何检测电子邮件是否是谷歌帐户?

  •  7
  • FernandoEscher  · 技术社区  · 14 年前

    我和这里的一些人正在创业。我们目前正在使用Google OpenID API来管理注册和登录我们的应用程序,但我们希望迁移到一个更简单的用户注册模型。为此,我们需要知道是否有一种方法可以检测电子邮件(不是gmail)是否已经是Google帐户。有没有办法从Google单点登录API获取这些信息?

    感谢您的帮助!:)

    5 回复  |  直到 14 年前
        1
  •  2
  •   timdream    14 年前

    你不能那样做。我不认为谷歌可以告诉你,没有用户的同意。

    但是,您可以使用此作为发现URL查看该域是否为Google Apps域: https://www.google.com/accounts/o8/site-xrds?hd=mail.moztw.org

    注意到域的管理员可能没有正确安装该域的OpenID支持。我的幻灯片对此进行了详细讨论: http://www.slideshare.net/timdream/google-apps-account-as-openid

        2
  •  12
  •   dbadness    9 年前

    如果你在Mac上,打开终端并输入 $ host {example.com} 以确定他们的电子邮件是否由谷歌托管。

    例如:

    $ host yelp.com
    yelp.com has address 104.16.57.23
    yelp.com has address 104.16.56.23
    yelp.com mail is handled by 1 ASPMX.L.GOOGLE.com.
    yelp.com mail is handled by 10 ASPMX2.GOOGLEMAIL.com.
    yelp.com mail is handled by 10 ASPMX5.GOOGLEMAIL.com.
    yelp.com mail is handled by 10 ASPMX3.GOOGLEMAIL.com.
    yelp.com mail is handled by 5 ALT2.ASPMX.L.GOOGLE.com.
    yelp.com mail is handled by 10 ASPMX4.GOOGLEMAIL.com.
    yelp.com mail is handled by 5 ALT1.ASPMX.L.GOOGLE.com.
    
        3
  •  4
  •   Dan    12 年前

    这不是一个完整的解决方案,但是你可以通过查看某个人的域的MX记录来判断他是否在谷歌应用程序上。答案中的链接对我不起作用,所以这可能是一个更好的解决方案。

        4
  •  0
  •   Doug    11 年前

    为此,我使用了一个虚拟文件,并使用addViewer函数向其中添加电子邮件地址。我试着这么做…接住。如果发现错误,我会将本地标志设置为“不是google帐户”。如果没有错误,我会将它们作为我的虚拟文件的查看器删除,并设置我的标志,表示电子邮件地址是合法的google帐户。

        5
  •  0
  •   Lexcel Atmadata    8 年前

    我想出了道格的建议,而且奏效了。只要确保调用函数的(有效的)用户有权调用addViewer。实现这一点的技巧是确保从触发器例程调用例程,因此脚本的所有者是有效的用户。

    function checkIfGoogleAccount(emailAddress) {
      try {
        SpreadsheetApp.getActiveSpreadsheet().addViewer(emailAddress) ;
        SpreadsheetApp.getActiveSpreadsheet().removeViewer(emailAddress) ;
        return true ;
      }
      catch(err) {
        return false ;
      }
    }