如何确定该帐户是否为Google Apps帐户?

时间:2012-05-15 10:31:30

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

我正在使用.net V3(dll版本2.0.1.0)的Google文档列表api。我正在使用此链接https://developers.google.com/google-apps/documents-list/#authorizing_requests_with_clientlogin

中所述的客户端登录身份验证

如何确定其是Google应用帐户还是普通Google帐户?

谢谢, 巴拉斯

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

我认为有一种非常好的方法可以检查某个帐户是否为Google Apps帐户。

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

我想到的唯一方法是查看域名的DNS MX记录,看看该域名的某些服务是否由Google Apps服务器提供(例如从gmail等提供的电子邮件等),但即便如此,您可能还有检查多个服务,因为某些Google Apps公司会停用Gmail(例如某些其他服务)以使用自定义解决方案。

答案 2 :(得分:1)

假设你包括:

https://www.googleapis.com/auth/userinfo.email
在您的OAuth范围中

,您可以发出以下请求:

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

如果是Google Apps帐户,那么Google Apps域的调用将返回“hd”参数(托管域名?)作为其价值。如果它是一个消费者帐户,无论是@ 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
}

答案 3 :(得分:-4)

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