1

Я пытаюсь написать код, чтобы получить все учетные записи пользователей в нашем домене Google Apps с помощью API-интерфейса API Google Admin с 2-мя ногами OAuth. К сожалению, я вряд ли могу найти какие-либо документы или образец кода для API каталогов. Я пробовал код ниже:Как использовать 2 legged oauth в API администратора каталога Google

AdminService adminService = new AdminService(); 
Google.Apis.Authentication.OAuth2LeggedAuthenticator authenticator= new Google.Apis.Authentication.OAuth2LeggedAuthenticator(mydomainName, domainConsumerSecret, adminId, mydomainName); 
UsersResource usrRes = new UsersResource(adminService, authenticator); 
UsersResource.ListRequest listReq = usrRes.List(); 
Google.Apis.Admin.directory_v1.Data.Users allUsers = listReq .Fetch(); 
foreach (Google.Apis.Admin.directory_v1.Data.User usr in allUsers.UsersValue) 
{ ... } 

Но у меня была несанкционированная ошибка 401. Затем я пробовал использовать низкоуровневый путь, используя старый GData Lib.

Google.GData.Client.OAuth2LeggedAuthenticator authenticator = new OAuth2LeggedAuthenticator("MyAPP", mydomainName, domainConsumerSecret,adminId, mydomainName, "HMAC-SHA1"); 
HttpWebRequest request = authenticator.CreateHttpWebRequest("GET", new Uri("https://www.googleapis.com/admin/directory/v1/users?domain=mydomain.com")); 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

приведенный выше код получил ту же ошибку 401.

Основываясь на исходном коде API Справочника, я думаю, что поддерживается 2LO. Однако я просто не могу заставить его работать. Любой может помочь указать на мою проблему? Благодарю.

Другой вопрос: нужен ли идентификатор userid (xoauth_requestor_id) для запроса API каталога 2LO? Я знаю, что этот параметр требуется для других API при использовании 2LO, но не ясен, если это требуется для API каталогов и Provisioning.

BTW: Я хотел бы построить HTTP-запросы 2LO с нуля без использования каких-либо lib, но я еще не начал это делать. Мне нужно убедиться, что 2LO работает с запросами API каталога.

+1

2-legged Oauth 1.0 устарел. Если у вас нет особых причин для его использования, вы должны использовать OAuth 2.0, возможно, вместо учетных записей служб. –

+0

Спасибо, Джей, я нашел проблему, отсутствует параметр «API-ключ» – skyfree

ответ

1

Если кто-то еще наткнулся на это, Google отклонил API Provisioning за месяц до первоначального сообщения. Недавно я столкнулся с такой же проблемой при попытке авторизации доступа API к моему домену Google Apps с помощью API-интерфейса администратора. После того, как, наконец, выяснив это, я решил документировать его, и я действительно собрал серию о том, как make some sense out of Google Apps Directory API and OAuth 2.0 ... Имейте в виду, что Google теперь настоятельно рекомендует использовать OAuth 2.0, поэтому 2LO - это в прошлом, и вышеупомянутое «исправление» больше не может быть релевантным.

В случае, если люди не хотят нажимать на эту ссылку, я бы рекомендовал использовать API-интерфейс Google, чтобы узнать, как успешно сформирован запрос POST/GET с использованием определенных API. Это избавило меня от кучи времени. Кроме того, следует предупредить, если вы пытаетесь использовать API directory.users.list и имеете тысячи учетных записей в домене, для извлечения пользователей потребуется очень много времени. Я бы предложил начать с API directory.users.get для получения определенного пользователя и проверить, как выглядит успешный запрос/ответ API.

+0

Я хотел использовать API-интерфейс каталога, чтобы получить список пользователей для домена. Этот метод работает, но я пытался получить это с помощью 1 legged auth. Это не сработало. У меня мало сомнений. 1. Используется ли 1LO на oauth1.0 (который устарел), или он также может использоваться с oauth2.0? 2. [admin.google.com] В security-> advanced settings-> Управление доступом к Oauth клиенту я добавил свой клиент API с областью доступа для получения доступа к данным. Но при создании запроса API с этим клиентом API я всегда получаю запрет. Поддерживается ли этот поток с помощью OAuth2.0? – hridayesh

 Смежные вопросы

  • Нет связанных вопросов^_^