Я пытаюсь использовать Double Click for Advertisers API (DFA). Я исследовал «Попробуйте» и протестировал Api через консоль разработчиков Google, и он работает так, как ожидалось. Я смог поймать токен авторизации и выполнить запросы на получение и отправку (через браузер и программно). Однако, когда я пытаюсь сделать то же самое, программно используя donet api 2.4, токен аутентификации, который был сгенерирован, не позволяет мне делать какие-либо запросы, он всегда возвращает HTTP 400 Bad Request по причине Недопустимый идентификатор профиля.Отчет Google DFA - неверный запрос (400) Недопустимый идентификатор профиля
Я не уверен, если client_secrets.json правильно, но я создал его, используя ту же учетную запись электронной почты, который имеет доступ к отчетам.
{
"installed": {
"client_id": "<client_id>.apps.googleusercontent.com",
"project_id": "<project_id>",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "<secret>",
"redirect_uris": [ "urn:ietf:wg:oauth:2.0:oob", "http://localhost" ]
}
}
Я использовал код мандатную ниже:
private static readonly IEnumerable<string> scopes = new[] {
DfareportingService.Scope.Dfareporting,
DfareportingService.Scope.Dfatrafficking
};
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
scopes,
"dfa-user", CancellationToken.None,
new FileDataStore("DfaReporting.Samples")).Result;
Сформированный маркер дает мне следующую информацию:
{
"issued_to": "<client_id>.apps.googleusercontent.com",
"audience": "<client_id>.apps.googleusercontent.com",
"scope": "https://www.googleapis.com/auth/dfareporting https://www.googleapis.com/auth/dfatrafficking",
"expires_in": 3073,
"access_type": "offline"
}
библиотеки я уже упоминал выше, доступны на GitHub: https://github.com/googleads/googleads-dfa-reporting-samples/tree/master/dotnet/v2.4
Что мне не хватает?
где запрос, который терпит неудачу? вы только отправили свой код аутентификации, этого недостаточно, чтобы найти вашу ошибку. Помните, что пользователь, который выполняет проверку подлинности, должен быть таким же, как пользователь, которому принадлежит профиль, к которому вы пытаетесь запросить данные. – DaImTo
У него нет полного кода, но в основном служба является результатом метода, в котором я получаю учетные данные. Запрос, предоставляющий исключение (плохой запрос), является сервисом. Реестры.Run 'Служба DfareportingService = DfaReportingFactory.getInstance(); (...) // Запустите отчет. Файл file = service.Reports.Run (profileId, reportId) .Execute() ' – bmvr
do userprofiles.list сначала попробуйте запустить отчет для профиля, к которому у пользователя нет доступа. – DaImTo