Клиент Python API Google AdWords возвращает только RefreshError: invalid_grant: неверный запрос

#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. Спасибо за ваш ответ, и я создаю тестовую учетную запись, следуя вашим инструкциям..