Я уже давно работаю с API каталогов Google.
Однако мне нужно обновить настройки единого входа в разделе настроек администратора Google.Да, они говорят, что в какой-то момент он будет устаревшим, но, по словам сотрудника Google, пройдет некоторое время, прежде чем будет доступен новый API, а затем будет удален старый.
Сначала, если естьпакет NUGET, пожалуйста, дайте мне знать.Кажется, я не могу найти ничего, что работает с API настроек администратора: https://developers.google.com/admin-sdk/admin-settings/
Моя первая попытка получить настройки единого входа в Google.
Я могу использовать почтальон, чтобы получить эту информациюпоэтому я знаю, что API работает.
Однако я сталкиваюсь с двумя проблемами:
- Как я могу аутентифицироваться, используя сертификат службы, который я использую в apis.google.directoryучебный класс?
- Ожидая, как мне запросить доступ к настройкам администратора?В каталоге API у меня есть область видимости enum для выбора.Если я делаю ручное соединение с API, я предполагаю, что мне нужно будет вызвать это вручную?
Код
var certificate = new X509Certificate2(serviceAccountCertPath,
serviceAccountCertPassword,
X509KeyStorageFlags.Exportable);
// below the scopes are going to get in my way, right? What is the scope process I need to do for this manually?
credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser,
DirectoryService.Scope.AdminDirectoryGroup,
DirectoryService.Scope.AdminDirectoryOrgunit},
User = _szAdminEmail
}.FromCertificate(certificate));
// I'm not seeing anyway to call the above credentials
using (HttpClient client = new HttpClient())
{
// client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
client.BaseAddress = new Uri(@"https://apps-apis.google.com/a/feeds/domain/2.0/[mydomain]/sso/general");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//client.DefaultRequestHeaders.
HttpResponseMessage response = client.GetAsync("api/Values").Result; // Blocking call!
var products = response.Content.ReadAsStringAsync().Result;
return products.ToString();
}