Использование API Google Workspace для получения информации о хранилище, используемом пользователем.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Использование API Google Workspace для получения информации о хранилище, используемом пользователем.

Сообщение Anonymous »

Я хотел бы запросить API Google Workspace, чтобы получить информацию о потребленном пользователем хранилище. Я использую .NET 7 C# для доступа к каталогу Google и конфигурации GMAIL для пользователей. Он подключается к приложению-службе и использует олицетворение, и все это работает правильно. Я добавил область DriveService.Scope.Drive в свой массив областей, и эта область включена в моей службе API Google. Я вызываю следующую функцию:

Код: Выделить всё

 public void GetUserStorageUsage(string emailAddress)
{
// Create Directory API service.
DriveService driveService = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = GetOAuthServiceAccountCredential(emailAddress),
ApplicationName = ApplicationName
});

var x = driveService.About.Get();
if(x !=null)
{
var z = x.Execute();
}

}
и выдает следующее исключение из пакета Google.Apis:

Код: Выделить всё

Google.GoogleApiException
HResult=0x80131500
Source=Google.Apis
StackTrace:
at Google.Apis.Requests.ClientServiceRequest`1.
d__38.MoveNext() in Google.Apis.Requests\ClientServiceRequest.cs:line 157
at Google.Apis.Requests.ClientServiceRequest`1.Execute() in Google.Apis.Requests\ClientServiceRequest.cs:line 103

Я добавил точку останова внутри ClientServiceRequest.cs, чтобы можно было просмотреть HttpResponseMessage и при вызове:
https://www. googleapis.com/drive/v3/about
Я получаю код состояния 400 с указанием причины «Неверный запрос».
Возможно, это мой подход неправильно? Если у кого-то есть понимание, я был бы признателен. Мне не удалось найти примеры использования хранилища пользователей Google Workspace.
Вот функция олицетворения

Код: Выделить всё

public ServiceAccountCredential GetOAuthServiceAccountCredential(String IpersonatedUser)
{
ServiceAccountCredential credential;

using (FileStream? stream = new FileStream(Filename , FileMode.Open, FileAccess.Read))
{
credential =
GoogleCredential
.FromStream(stream)
.CreateScoped(Scopes)
.CreateWithUser(IpersonatedUser)
.UnderlyingCredential as ServiceAccountCredential;
}
//credential.User = IpersonatedUser;

//FieldInfo userField = typeof(ServiceAccountCredential).GetField("User", BindingFlags.NonPublic | BindingFlags.Instance);
//userField.SetValue(credential, IpersonatedUser);

return credential;
}
А вот области действия:

Код: Выделить всё

private String[] Scopes = {
DirectoryService.Scope.AdminDirectoryCustomer,
DirectoryService.Scope.AdminDirectoryDomain,
DirectoryService.Scope.AdminDirectoryGroup,
DirectoryService.Scope.AdminDirectoryGroupMember,
DirectoryService.Scope.AdminDirectoryOrgunit,
DirectoryService.Scope.AdminDirectoryUser,
DirectoryService.Scope.AdminDirectoryUserAlias,
GmailService.Scope.GmailSettingsBasic,
GmailService.Scope.GmailSettingsSharing,
DriveService.Scope.Drive
};
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/789 ... -by-a-user
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»