Не удается получить доступ к API управления AdSense

Не могу получить доступ к AdSense API, что бы я ни пытался. Я пробовал аутентификацию как с служебной учетной записью, так и с аутентификацией OAuth.

Что я пытаюсь сделать:

Создание бота, который будет получать доход от AdSense и сохранять его во внутренней базе данных для отслеживания доходов с течением времени. Я не хочу иметь проблем с аутентификацией, мне нужна конфигурация сервер-сервер.

Что я знаю, так это то, что вы можете иметь токены доступа и токены обновления под OAuth. Мне еще предстоит заставить их работать с любыми доступными API с AdSense. Примечание. Я создал API для работы с AdWords без проблем.

Ошибки: (между типами аутентификации я не могу пройти эти)

  • "Аккаунт не найден"

  • «Клиент не авторизован для получения токенов доступа с помощью этого метода».

Что я уже сделал:

  • API управления AdSense включен.

  • Учетные данные созданы: учетная запись службы

  • Созданные учетные данные: идентификатор клиента oAuth 2.0

  • Учетная запись GSuite имеет доступ к API (включая «включенный доступ к API» и «управляемый клиентский доступ к API»).

Библиотеки (пытаюсь) использовать:

https://developers.google.com/api-client-library/php/< /а>

https://github.com/google/google-api-php-client

https://github.com/google/google-api-php-client-services

(устарело) https://github.com/googleads/googleads-adsense-examples

Пример кода: (используя сервисный аккаунт)

$client = new \Google_Client();
$client->setAuthConfig(WRITEPATH . 'auth/adsense-client.json');
$client->setIncludeGrantedScopes(true);
$client->addScope('https://www.googleapis.com/auth/adsense');
$client->setSubject('[email protected]');

// trying to fire the services
$service = new \Google_Service_AdSense($client);
$report  = $service->accounts_reports->generate('clientId', $startDate, $endDate, $optParams);

Этот сценарий выдает сообщение об ошибке "Клиент не имеет прав на получение маркеров доступа с помощью этого метода". Однако используемый адрес электронной почты может получить доступ к учетной записи AdSense, API-интерфейсы включены и настроены на уровне домена администратора.

Есть ли более простой способ? есть ли кто-нибудь, кто может вести меня в правильном направлении?


person tmarois    schedule 19.02.2018    source источник


Ответы (1)


Сервисный аккаунт

Я не совсем уверен, что сервисные аккаунты работают с AdSence. Вы можете попробовать, зайдя на веб-сайт AdSence и в разделе manageUsers добавьте адрес электронной почты служебной учетной записи. Проблема здесь в том, что он будет находиться в ожидании, я думаю, потому что учетная запись службы должна подтвердить, что она была добавлена. Это невозможно сделать.

Уровень домена администратора

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

Клиент не авторизован для получения токенов доступа с помощью этого метода.

Что касается этой ошибки, я могу помочь. Это означает, что вы взяли загруженный файл учетных данных для учетной записи службы и пытаетесь использовать его с кодом для Oauth2. или наоборот. Загрузите файл учетных данных еще раз и повторите попытку.

У меня есть пример кода, который может помочь здесь

person DaImTo    schedule 22.02.2018
comment
Спасибо за объяснение и пример кода! Вчера я провел весь день, работая над множеством этих устаревших примеров php, некоторые работают, некоторые нет, поэтому я был очень расстроен, когда написал этот вопрос. Мне удалось заставить OAuth успешно работать, как оказалось, ненайденная учетная запись действительно была проблемой с отсутствием pub- в поле идентификатора клиента, среди других проблем. Отсутствие документации/примеров и правильных сообщений об ошибках действительно является проблемой для официального php API. Я ценю ответ. Поскольку ваш ответ проясняет мои вопросы, я отмечу его как ответ. Спасибо! - person tmarois; 23.02.2018
comment
дайте мне знать, если я могу что-то сделать, чтобы улучшить мои образцы, рад слышать, что у вас это работает - person DaImTo; 23.02.2018