Почему в API пользовательского поиска Google отсутствует токен доступа при использовании клиента Ruby? - PullRequest
4 голосов
/ 04 ноября 2011

Я пытаюсь использовать API пользовательского поиска Google до клиент Google API Ruby . Я настроил свой ключ API через консоль API Google, а также создал свой CSE. Исходя из документации, кажется, что, пока я предоставляю ключ API (что я делаю), мне не нужен токен аутентификации OAuth2 для вызова метода list. Однако, когда я пытаюсь выполнить приведенный ниже код, я получаю следующую ошибку:

ArgumentError: отсутствует токен доступа.

Чего мне не хватает? Вот мой код:

# create client
client = Google::APIClient.new

# Fetch discovery doc
search = client.discovered_api('custom search')

# Call list method
response = client.execute(
  search.cse.list, 'key' => '<my API key>', 'cx' => '<my CSE id>', 'alt' => 'json', 'q' => 'hello world'
)

Ответы [ 4 ]

2 голосов
/ 07 ноября 2011

Я считаю, что это на самом деле ошибка в клиенте (это в альфа-версии). Немного поигравшись с этим, я нашел обходной путь:

сразу после создания объекта клиента назначьте ему «фиктивный» токен доступа:

client.authorization.access_token = '123'

тогда вы можете вызывать метод search.cse.list, не получая 'ArgumentError: Отсутствует токен доступа'. ошибка.

0 голосов
/ 12 ноября 2014

В текущей версии гема (0.7.1) вам необходимо установить авторизацию на nil в дополнение к настройке ключа:

require 'google/api_client'

client = Google::APIClient.new
client.key = ENV['GOOGLE_API_KEY']
client.authorization = nil

client.execute ...
0 голосов
/ 06 ноября 2014

Я обнаружил, что добавление client.retries = 3 в мой код решает эту проблему.

0 голосов
/ 07 февраля 2013

Если вы только что используете Google CSE с ruby, попробуйте google-cse . Я только построил драгоценный камень, хотя я использовал это некоторое время в частном порядке. Намного проще работать с альфа-клиентом

...