【问题标题】:How to determine if the account is a Google apps account?如何确定该帐户是否为 Google Apps 帐户?
【发布时间】:2012-05-15 10:31:29
【问题描述】:

我正在使用 .net V3(dll 版本 2.0.1.0)的 Google 文档列表 API。我正在使用此链接中所述的客户端登录身份验证https://developers.google.com/google-apps/documents-list/#authorizing_requests_with_clientlogin

我如何确定它是 Google Apps 帐户还是普通 Google 帐户?

谢谢, 巴拉特

【问题讨论】:

    标签: .net google-docs-api google-drive-api


    【解决方案1】:

    如果您的目标是检查用户是否有权访问给定功能,您可以向元数据提要发送请求并检查 <docs:feature> 元素。

    例如,带有<docs:featureName>upload_any</docs:featureName> 的功能表示用户可以上传任何类型的文档:

    https://developers.google.com/google-apps/documents-list/#getting_general_information_about_a_users_account

    【讨论】:

      【解决方案2】:

      我认为没有很好的方法来检查帐户是否是 Google Apps 帐户。

      检查电子邮件是否不同于@gmail.com 将不起作用,因为可以使用现有电子邮件地址创建 Google 帐户。

      我想到的唯一方法是检查域的 DNS MX 记录并查看域的某些服务是否由 Google Apps 服务器提供(例如从 gmail 提供的电子邮件等...)但即使在那里你也可能有检查不止一项服务,因为某些 Google Apps 公司会停用 Gmail(或其他一些服务)以使用自定义解决方案。

      【讨论】:

        【解决方案3】:

        假设你包括:

        https://www.googleapis.com/auth/userinfo.email
        

        在您的 OAuth 范围内,您可以提出以下请求:

        https://www.googleapis.com/oauth2/v2/userinfo
        

        如果是 Google Apps 帐户,调用将返回一个“hd”参数(托管域?),并将 Google Apps 域作为其值。如果是消费者账户,无论是@gmail.com 还是潜在的“冲突账户”,都不会返回 hd 参数。请参阅下面的示例。 admin@jay.powerposters.org 是 Google Apps 帐户,而 consumer@jay.powerposters.org 是消费者帐户。如果我在 Google Apps 域中创建了一个消费者用户,它将成为一个有冲突的帐户,并且消费者帐户将被排除在 @jay.powerposters.org 命名空间之外,但这还没有发生。

        对于 admin@jay.powerposters.org:

        GET https://www.googleapis.com/oauth2/v2/userinfo
        
        HTTP/1.1 200 OK
        Content-length: 99
        X-xss-protection: 1; mode=block
        ...
        
        {
         "email": "admin@jay.powerposters.org",
         "verified_email": true,
         "hd": "jay.powerposters.org"
        }
        

        对于 consumer@jay.powerposters.org:

        GET https://www.googleapis.com/oauth2/v2/userinfo
        
        HTTP/1.1 200 OK
        Content-length: 71
        X-xss-protection: 1; mode=block
        
        {
         "email": "consumer@jay.powerposters.org",
         "verified_email": true
        }
        

        【讨论】:

          【解决方案4】:

          Google 消费者帐户是 @gmail.com 或很少是 @googlemail.com,其余的是 Google Apps 帐户。

          【讨论】:

          • 谢谢。我想过这个,但感觉很粗糙。所以我在想是否有另一种方法。还有另一个考虑是(whatif)我被要求切换到 OAuth 身份验证。因此,我正在寻找从 api 确定这一点的方法。
          • 其实并不完全正确。可以使用任何现有电子邮件打开 Google 帐户。例如,我有一个不是 Google Apps 域的 @free.fr 帐户。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-03-10
          • 1970-01-01
          • 2011-03-06
          • 2016-12-15
          • 2011-02-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多