Доступ к Google Shopping API через Python

Я совершенно новичок в API Google, и я немного растерялся:)

Сначала я поиграл с Google API Explorer, и все работало нормально, все мои запросы.

Затем я начал писать небольшой Python Script для авторизации и вызова API через служебную учетную запись.

Это выглядит так:

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

import httplib2
import json
import os


credentials = ServiceAccountCredentials.from_json_keyfile_name(
    filename='/Users/Shopping Dashboard.json',
    scopes='https://www.googleapis.com/auth/content')

http = credentials.authorize(httplib2.Http())

service = build('content', 'v2', http=http)
print service.accounts().authinfo().execute()

request = service.accounts().list(merchantId='xxx', maxResults=50)
result = request.execute()
print result

Однако, хотя я думал, что все в порядке, я все еще получаю эту ошибку

googleapiclient.errors.HttpError: <HttpError 401 when requesting https://www.googleapis.com/content/v2/xxxxx/accounts?alt=json&maxResults=50 returned "User cannot access account xxxxx">

Я думаю, что здесь я скучаю по созданию своего токена (?) Перед вызовом URL? Но как это создается? Я знаю, что существует 1000 примеров, и я использовал некоторые скрипты, которые уже есть в github, и они работают, но они уже слишком сложны и сложны для меня, чтобы я мог их понять. Что мне здесь не хватает, так это понять, как этот процесс работает на каком-то простом примере, и уметь копировать логику

Большое спасибо!

2 ответа

У меня такая же проблема. Оказывается, ваш файл Shopping Dashboard.json должен исходить из самого торгового центра, а не из консоли разработчика Google.

  • Убедитесь, что у вас есть доступ администратора
  • В Merchant Center перейдите в выпадающее меню...> Content API
  • Перейдите на вкладку "Аутентификация" и "Создать ключ API". Вы сможете увидеть эту вкладку, только если у вас есть права администратора.
  • Сохраните content-api-key.json вместо /Users/Shopping Dashboard.json

Это, вероятно, символическая вещь. При использовании этого типа API токен всегда необходим. но проверьте это, чтобы увидеть, как это делается с помощью urllib2.

Другие вопросы по тегам