Как определить, является ли учетная запись учетной записью приложений Google?

Я использую API-интерфейс списка документов Google для .net V3 (dll версии 2.0.1.0). Я использую аутентификацию при входе клиента, как описано в этой ссылке https://developers.google.com/google-apps/documents-list/#authorizing_requests_with_clientlogin

Как я могу определить, является ли это учетной записью приложений Google или обычной учетной записью Google?

Спасибо, Бхарат


person Raghunath Bharath    schedule 15.05.2012    source источник


Ответы (4)


Потребительские аккаунты Google — это @gmail.com или редко @googlemail.com, остальные будут аккаунтами Google Apps.

person Ali Afshar    schedule 15.05.2012
comment
Спасибо. Я думал об этом, но это было очень грубо. Вот я и подумал, есть ли другой способ. Также было еще одно соображение, что (что если) меня просят переключиться на аутентификацию OAuth. Поэтому я искал способы определить это из API. - person Raghunath Bharath; 16.05.2012
comment
На самом деле не совсем верно. Можно открыть учетную запись Google с любой существующей электронной почтой. Например, у меня есть учетная запись @free.fr, которая не является доменом Google Apps. - person Nicolas Garnier; 25.07.2012

Если ваша цель — проверить, есть ли у пользователя доступ к данной функциональности, вы можете отправить запрос в ленту метаданных и проверить элементы <docs:feature>.

Например, функция с <docs:featureName>upload_any</docs:featureName> указывает, что пользователь может загружать любые документы:

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

person Claudio Cherubino    schedule 15.05.2012

Я не думаю, что есть очень хороший способ проверить, является ли учетная запись учетной записью Google Apps.

Проверка того, отличается ли адрес электронной почты от @gmail.com, не будет работать, поскольку можно создавать учетные записи Google с существующими адресами электронной почты.

Единственный способ, о котором я думаю, - это проверить записи DNS MX домена и посмотреть, обслуживаются ли какие-либо службы домена серверами Google Apps (например, электронная почта, обслуживаемая из gmail и т. д.), но даже там вам, возможно, придется проверить больше чем одна служба, потому что некоторые компании Google Apps деактивируют, например, Gmail (или какую-либо другую службу), чтобы вместо этого использовать собственное решение.

person Nicolas Garnier    schedule 25.07.2012

Предполагая, что вы включили:

https://www.googleapis.com/auth/userinfo.email

в ваших областях OAuth вы можете сделать запрос на:

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

Если это учетная запись Google Apps, параметр "hd" (размещенный домен?) будет возвращен вызовом с доменом Google Apps в качестве значения. Если это учетная запись потребителя, будь то @gmail.com или даже потенциальная «конфликтующая учетная запись», параметр hd не будет возвращен. Смотрите мой пример ниже. [email protected] — это учетная запись Google Apps, а [email protected] — потребительская учетная запись. Если бы я создал пользователя-потребителя в домене Google Apps, это стало бы конфликтующей учетной записью, и учетная запись потребителя была бы вытеснена из пространства имен @jay.powerposters.org, но этого еще не произошло.

Для [email protected]:

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

HTTP/1.1 200 OK
Content-length: 99
X-xss-protection: 1; mode=block
...

{
 "email": "[email protected]",
 "verified_email": true,
 "hd": "jay.powerposters.org"
}

Для [email protected]:

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

HTTP/1.1 200 OK
Content-length: 71
X-xss-protection: 1; mode=block

{
 "email": "[email protected]",
 "verified_email": true
}
person Jay Lee    schedule 18.01.2013