.net 如何确定该帐户是否为谷歌应用程序帐户?

.net 如何确定该帐户是否为谷歌应用程序帐户?,.net,google-docs-api,google-drive-api,.net,Google Docs Api,Google Drive Api,我正在使用.NETV3(dll版本2.0.1.0)的Google文档列表api。我正在使用此链接中描述的客户端登录身份验证 我如何确定它是一个谷歌应用程序帐户还是一个普通的谷歌帐户 谢谢, Bharath谷歌消费者帐户是@gmail.com或很少是@googlemail.com,其余的将是谷歌应用程序帐户。如果你的目标是检查用户是否有权访问给定的功能,你可以向元数据提要发送请求并检查元素 例如,带有upload\u any的功能表示用户可以上载任何类型的文档: 我认为没有很好的方法来检查一个帐户

我正在使用.NETV3(dll版本2.0.1.0)的Google文档列表api。我正在使用此链接中描述的客户端登录身份验证

我如何确定它是一个谷歌应用程序帐户还是一个普通的谷歌帐户

谢谢,
Bharath

谷歌消费者帐户是
@gmail.com
或很少是
@googlemail.com
,其余的将是谷歌应用程序帐户。

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

例如,带有
upload\u any
的功能表示用户可以上载任何类型的文档:


我认为没有很好的方法来检查一个帐户是否是谷歌应用程序帐户

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

我想的唯一方法是检查域名的DNS MX记录,看看该域名的某些服务是否由谷歌应用服务器提供(如gmail提供的电子邮件等),但即使在那里,你也可能需要检查多个服务,因为一些谷歌应用公司停用了gmail(或其他服务)改为使用自定义解决方案。

假设您包括:

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是一个谷歌应用程序帐户,而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"
}
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
}
为了consumer@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"
}
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
}

谢谢我曾想过这个,但感觉很粗糙。所以我在想是否还有别的办法。还有另一个考虑因素(whatif),我被要求切换到OAuth身份验证。因此,我正在寻找从api中确定这一点的方法。实际上,这并不完全正确。可以使用任何现有电子邮件打开谷歌帐户。例如,我有一个@free.fr帐户,它不是谷歌应用程序域。