Моя программа C# успешно использует API-интерфейс Google Analytics и API управления аккаунтом Google Премиум, который у меня есть (по настройкам прокси-сервера).C# Google Analytics UnsampledReports.Insert возвращает «Недостаточное разрешение» [403] '
Примеры успешных звонков по моей «AnalyticsService службе» являются:
service.Management.Accounts.List();
service.Management.Webproperties.List(account.Id);
service.Management.Profiles.List(account.Id, webproperty.Id);
service.Data.Ga.Get("ga:" + profile_id, end_date.ToString("yyyy-MM-dd"), end_date.AddDays(1).ToString("yyyy-MM-dd"), "ga:uniqueEvents,ga:eventValue");
service.Management.UnsampledReports.List(results.ProfileInfo.AccountId, results.ProfileInfo.WebPropertyId, results.ProfileInfo.ProfileId).Execute();
service.Management.UnsampledReports.Get(results.ProfileInfo.AccountId, results.ProfileInfo.WebPropertyId, results.ProfileInfo.ProfileId, file_entry.Id).Execute();
Я пытался понять область аутентификации GET/POST в service.Management.UnsampledReports.Insert, читая документацию https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtUnsampledReports но когда я пытаюсь вставить полный отчет в моей C# программы я получаю сообщение об ошибке:
The service analytics has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Insufficient Permission [403]
Errors [
Message[Insufficient Permission] Location[ - ] Reason[insufficientPermissions] Domain[global]
]
код является:
UnsampledReport report = new UnsampledReport();
report.Title = "Test the API";
report.StartDate = "2014-10-21";
report.EndDate = "2014-10-22";
report.Metrics = "ga:uniqueEvents,ga:eventValue";
report.Dimensions = "ga:Dimension1, ga:Dimension2, ga:Dimension3, ga:eventAction";
report.Filters = "ga:Dimension1=~10.0.A.;ga:eventAction=~.*100$";
try
{
service.Management.UnsampledReports.Insert(report, results.ProfileInfo.AccountId, results.ProfileInfo.WebPropertyId, results.ProfileInfo.ProfileId).Execute();
}
catch (Exception google_exception)
{
Console.WriteLine("{0} UnsampledReports.Insert caught", google_exception);
}
где «результаты» является результатом успешных вызовов DataResource.GaResource.GetRequest data_request = service.Data.Ga.Get(...
и GaData results = data_request.Execute();
я в состоянии создать не-выборку отчетов по веб-интерфейс, предоставляемый Google Premium, можно перечислить эти отчеты и получить их на C#, но я не могу вставлять отфильтрованные отчеты с C#. В соответствии с документацией необходимо поддерживать две метрики и четыре измерения с фильтрами. Я заметил, что плоские таблицы в веб-интерфейсе поддерживают только два измерения, но я думаю, что четыре должны быть в порядке.
Я использую последние версии NuGet из:
using Google.Apis.Auth;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Analytics.v3;
using Google.Apis.Util.Store;
using Google.Apis.Services;
using Google.Apis.Analytics.v3.Data;
Я использую эту область аутентификации:
using (var stream = new FileStream(path_secret + @"\client_secrets.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { AnalyticsService.Scope.Analytics,
AnalyticsService.Scope.AnalyticsEdit,
AnalyticsService.Scope.AnalyticsReadonly },
"Test user",
CancellationToken.None,
new FileDataStore("Analytics.Auth.Store")).Result;
}
- Есть ли способ включения отладки распечаток URI, порождаемых код API?
- Является ли Wireshark лучшим способом отладки этого типа проблем?
- Я не смог найти полный исходный код в .zip-файлах, где я должен смотреть?
- Любой, у кого есть советы и рекомендации относительно того, как реализовать вызов service.Management.UnsampledReports.Insert?
Спасибо!
Пользователь, с которым вы входите в свое приложение. Какой уровень доступа у них есть? Я подозреваю, что проблема связана с доступом к вставкам. Я проверяю что-то с Devs, я вернусь к вам. – DaImTo
Благодарим вас за ответ. Виноват! Перечитав документацию, я понял, что моя первая область в коде была AnalyticsService.Scope.AnalyticsReadonly, и я принял маркер Oauth2, поддерживающий эту область.Несколько неожиданно, добавив две новые области: Analytics и AnalyticsEdit в коде не запускают запрос на новый токен OAuth2 с правильной лицензией прав. –
, если вы измените «Test user» на что-то еще, это заставит их повторно использовать, поскольку вы используете filedatastore, аутентификация хранится на вашем компьютере под этим именем. изменение имени приведет к его повторному использованию, потому что оно не может найти его. вам нужен только первый, он даст вам все. – DaImTo