Я пытаюсь написать код, чтобы получить все учетные записи пользователей в нашем домене 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 каталога.
2-legged Oauth 1.0 устарел. Если у вас нет особых причин для его использования, вы должны использовать OAuth 2.0, возможно, вместо учетных записей служб. –
Спасибо, Джей, я нашел проблему, отсутствует параметр «API-ключ» – skyfree