Перенос скрипта командной строки на FT API 1.0

У меня есть простой скрипт Python командной строки на стороне сервера, основанный на устаревшем API FT SQL, использующем вход клиента для авторизации. Каждые несколько часов я обновляю свой FT, вставляя обновленные данные. Это небольшая таблица, 3000 строк.

Прочтите Руководство по миграции FT, получите идентификатор пользователя Google, активируйте FT API и получите ключ API и т. д. (Переключение моего приложения Google Maps на новый API было простым)

Но я не понимаю, как продолжить миграцию скрипта Python из командной строки. Я вижу, что OAuth2 является рекомендуемым подходом для аутентификации, но мне кажется, что это гораздо более сложный подход, чем мне действительно нужно. Мне даже не ясно, будет ли это работать для сценариев командной строки. Действительно не нужно запрашивать у пользователя информацию для входа (это только я). Я понимаю, что это должно быть «Установленное приложение», и я нашел пример Hello,python по адресу https://developers.google.com/fusiontables/docs/sample_code#ftAPIv1

Еще не пробовал, но хотел узнать, есть ли у кого-нибудь опыт переноса сценариев командной строки. (PHP тоже будет работать)

В частности, меня заинтриговала цитата, которую я нашел здесь: https://developers.google.com/fusiontables/docs/v1/using

"API Fusion Tables также поддерживает более старые варианты авторизации, такие как OAuth 1.0, AuthSub или ClientLogin; однако в большинстве случаев мы не рекомендуем использовать эти другие параметры. Если ваше приложение уже использует эти параметры, мы рекомендуем выполнить миграцию на OAuth 2.0, если это возможно."

Потому что, честно говоря, я бы не стал переключаться на OAuth 2 для такой простой задачи.

ОБНОВЛЕНИЕ

Забыл упомянуть, я запускаю это из cron каждые 3 часа. Таким образом, пользовательский ввод невозможен. Хотя, как Дэвид предложил ниже, однократный пользовательский ввод выполним.


person Eric Bridger    schedule 27.12.2012    source источник


Ответы (2)


Вы должны иметь возможность использовать свой токен входа клиента в качестве токена аутентификации для существующего приложения командной строки на стороне сервера с новым API. Вам также потребуется включить в запрос ключ разработчика в качестве параметра «ключ».

person Warren    schedule 27.12.2012
comment
Спасибо, Уоррен. Звучит как самый простой подход, но мне нужно сопоставить его с советом Дэвида, который, возможно, является более правильным решением в долгосрочной перспективе. - person Eric Bridger; 28.12.2012
comment
Я пошел по пути наименьшего сопротивления, и этот подход действительно сработал. Это даст мне время для более подробного ознакомления с OAuth2 и т. д. - person Eric Bridger; 30.12.2012

Существует очень простая реализация потока установленного приложения OAuth2 на Python здесь https://developers.google.com/fusiontables/docs/samples/python, как вы, возможно, нашли, и да, вам следует переключиться на это. ClientLogin устарел, как и SQL API.

Код требует, чтобы вы открыли браузер, и предлагает вам каждый раз, когда вы его используете, и я собираюсь поговорить с автором об его оптимизации и сохранении токена обновления, поэтому он будет запрашивать только при первом использовании.

person David Primmer    schedule 27.12.2012
comment
Похоже, вы не хотите тратить на это слишком много времени, но если вы или кто-то другой хотите исследовать приложение с одноразовыми подсказками, библиотека Google для этого находится здесь developers.google.com/api-client-library/python/guide/ - person David Primmer; 28.12.2012
comment
Такие разные советы от двух разработчиков Google. Один для FT, один для OAuth2 ;-). Я, вероятно, рассмотрю оба подхода. OAuth для меня новая территория. Не знаю, зачем это нужно для установленных приложений. - person Eric Bridger; 28.12.2012
comment
Почему бы не использовать служебный аккаунт? Они поддерживаются библиотекой API Google для Python. и они не требуют запроса пользователя. Звучит как лучшее решение для этого варианта использования. - person Odi; 28.12.2012
comment
Теперь у меня есть время перейти на OAuth2 и исследовать учетные записи служб и т. д. - person Eric Bridger; 30.12.2012