如何知道Google帐户是否属于谷歌应用程序域?

xia*_*owl 8 google-docs google-drive-api

我正在开发一个应用程序,允许用户将他们的驱动器文件分享给朋友.但是,谷歌应用帐户存在问题,例如someone@somadomain.com,哪些文件无法与不在该域下的人共享.虽然管理员可以更改共享政策somedomain.com,但我不希望人们将我的应用与Google Apps帐户一起使用.

我还查看了这篇文章:如何确定该帐户是否为Google应用帐户?.但我不同意检查域以检测帐户类型的想法.因为人们可以使用任何电子邮件地址注册Google帐户.我刚用Hotmail注册了一个,someone@hotmail.com在共享文件时没有域名限制.

有人能帮忙吗?谢谢!

Jay*_*Lee 12

假设你包括:

https://www.googleapis.com/auth/userinfo.email
Run Code Online (Sandbox Code Playgroud)

在您的OAuth范围中,您可以发出以下请求:

https://www.googleapis.com/oauth2/v2/userinfo
Run Code Online (Sandbox Code Playgroud)

如果是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"
}
Run Code Online (Sandbox Code Playgroud)

对于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
}
Run Code Online (Sandbox Code Playgroud)