#python-3.x #google-ads-api
#python-3.x #google-ads-api
Вопрос:
Я новичок в AdWords и пытаюсь настроить свой первый запрос API в соответствии с приведенными здесь инструкциями, используя клиент Google AdWords API Python:https://developers.google.com/adwords/api/docs/guides/first-api-call Я следовал инструкциям, насколько мог, и могу получить только вызов API для возврата: google.auth.exceptions.RefreshError: (‘invalid_grant: неверный запрос’, ‘{n «ошибка»: «invalid_grant»,n «error_description»: «Неверный запрос»n}’)
Согласно инструкциям, я попробовал следующую последовательность:
1. Создайте учетную запись менеджера AdWords и запросите мой токен разработчика
2. Получено уведомление о том, что мой токен разработки теперь ожидает рассмотрения
3. Создал учетную запись менеджера тестирования, используя адрес электронной почты, отличный от того, который я использовал для запроса токена разработчика
4. Созданные тестовые кампании под учетной записью Test Manager
5. Установил клиентскую библиотеку Python в соответствии с предоставленными инструкциями
6. В консоли разработчика Google, связанной с адресом электронной почты, используемым для запроса моего токена разработчика, я настроил идентификатор клиента OAuth и получил свои client_ID и client_secret
7. Использовал эти учетные данные в generate_refresh_token.откройте файл py и запустите скрипт, чтобы получить URL для генерации токена обновления.
8. Перешел по указанному URL и вошел в систему, используя учетную запись TEST MANAGER, и получил токен обновления
9. В googleads.файл yaml (который находится в корневом каталоге моего жесткого диска) Я добавил токен разработчика из учетной записи AdWords Manager (не тестовой учетной записи), идентификаторы client_id и client_secret, сгенерированные на шаге 6, токен обновления, сгенерированный на шаге 8, и идентификатор клиента customer id из учетной записи TEST MANAGER.
10. Создал файл Python с примером скрипта API отсюда: https://github.com/googleads/googleads-python-lib/blob/master/examples/adwords/v201809/basic_operations/get_campaigns.py
Вот пример кода:
from googleads import adwords
PAGE_SIZE = 100
def main(client):
# Initialize appropriate service.
campaign_service = client.GetService('CampaignService', version='v201809')
# Construct selector and get all campaigns.
offset = 0
selector = {
'fields': ['Id', 'Name', 'Status'],
'paging': {
'startIndex': str(offset),
'numberResults': str(PAGE_SIZE)
}
}
more_pages = True
while more_pages:
page = campaign_service.get(selector)
# Display results.
if 'entries' in page:
for campaign in page['entries']:
print ('Campaign with id "%s", name "%s", and status "%s" was '
'found.' % (campaign['id'], campaign['name'],
campaign['status']))
else:
print ('No campaigns were found.')
offset = PAGE_SIZE
selector['paging']['startIndex'] = str(offset)
more_pages = offset < int(page['totalNumEntries'])
if __name__ == '__main__':
adwords_client = adwords.AdWordsClient.LoadFromStorage()
main(adwords_client)
Ожидаемый результат: ответ JSON для всех кампаний
Фактический результат: google.auth.exceptions.RefreshError: (‘invalid_grant: неверный запрос’, ‘{n «ошибка»: «invalid_grant»,n «error_description»: «Неверный запрос»n}’)
Ответ №1:
**** РЕДАКТИРОВАТЬ: Я РЕШИЛ СВОЮ ПРОБЛЕМУ **** Скриптом для generate_refresh_token.py написан на Python 2, и я пытался запустить его на Python 3. В строке 101 скрипта используется метод raw_input(), который был изменен в Python 3 на input(). Это вызывало ошибку при выполнении скрипта, которая не побуждала меня вводить код доступа, который мне был предоставлен после перехода по URL-адресу на шаге 8 (мне был предоставлен токен доступа, а не токен обновления, как я думал ранее).
После изменения скрипта на input () и запуска его в компиляторе Python 3 мне было предложено предоставить код доступа, который вернул код обновления в командной строке. Я надеюсь, что это поможет кому-то еще, испытывающему трудности с клиентом Python API.
Комментарии:
1. У меня проблемы с созданием тестовой учетной записи, можете ли вы дать мне несколько советов?
2. Я могу попробовать. В какой проблеме вы находитесь?
3. Спасибо за ваш ответ, и я создаю тестовую учетную запись, следуя вашим инструкциям..