3

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

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

谢谢,巴拉特

4

4 回答 4

1

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

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

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

于 2012-07-25T19:43:08.280 回答
1

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

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

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

于 2012-05-15T23:40:14.433 回答
1

假设您包括:

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
}
于 2013-01-18T14:40:35.460 回答
-4

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

于 2012-05-15T16:03:15.690 回答