我正在使用.net V3(dll版本2.0.1.0)的Google文档列表api。我正在使用此链接https://developers.google.com/google-apps/documents-list/#authorizing_requests_with_clientlogin
中所述的客户端登录身份验证如何确定其是Google应用帐户还是普通Google帐户?
谢谢, 巴拉斯
答案 0 :(得分:1)
如果您的目标是检查用户是否有权访问给定的功能,您可以向元数据Feed发送请求并检查<docs:feature>
元素。
例如,带有<docs:featureName>upload_any</docs:featureName>
的功能表示用户可以上传任何类型的文档:
答案 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帐户。