Шлюз Jabber-To-Evernote Внутри

Некоторое время назад я запустил бот для публикации в Evernote через Jabber и пообещал открыть исходный код, чтобы показать примеры работы с Evernote API и OAuth. Код находится в конце статьи, но сначала я расскажу о некоторых особенностях работы с Evernote.



Эверноут

Чтобы использовать API Evernote, вам необходимо отправить запрос в службу поддержки и получить потребительский ключ.

Вот здесь и начинаются сюрпризы — нигде не написано, но есть два типа ключей: для клиентских приложений (с доступом по логину и паролю) и для доступа через веб-авторизацию — OAuth. В письме обязательно укажите, что именно вам нужно.

Важно: все параметры доступа OAuth (права, время жизни токена) задаются на стороне сервера, поэтому о них лучше написать сразу.

Максимальная продолжительность жизни — 365 дней; токены (увы) не выдаются на неопределенный срок.

Права - стандартный набор создания/чтения/обновления/удаления плюс просмотр информации о пользователе и ее изменение.

Через некоторое время придет ответ с парой ключей (ключ потребителя и секрет потребителя) для доступа к серверу песочницы — sandbox.evernote.com .

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



OAuth

Следующим сюрпризом, с которым я столкнулся, стало отсутствие примеров авторизации OAuth в документации API. Конечно, есть документация на oauth.net и на другие сервисы, использующие OAuth (например, Twitter), но без привязки к конкретному сервису разобраться довольно сложно.

Итак, схема авторизации: 1. Запрос токена запроса приложением Полный URL-адрес запроса выглядит так: www.evernote.com/oauthЭoauth_consumer_key= ключ> &oauth_signature= %26&oauth_signature_method=обычный текст По этой ссылке приложению предоставляется токен, который используется для генерации ссылки, которую нужно будет передать пользователю для авторизации.

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

Ссылка, предоставленная пользователю: www.evernote.com/OAuth.actionЭoauth_callback= URL> &oauth_token= Еще один сюрприз: параметр oauth_callback (url, куда будет перенаправлен пользователь после подтверждения доступа) в спецификациях oauth указан как необязательный, но он необходим при запросе Evernote. Однако вполне достаточно вставить туда косую черту, чтобы перенаправить на главную страницу RU. 3. Запрос токена авторизации приложением После того как пользователь подтвердил доступ, приложение запрашивает постоянный токен, который в дальнейшем будет использоваться для авторизации: www.evernote.com/oauthЭoauth_consumer_key= ключ> &oauth_signature= %26&oauth_signature_method=plaintext&oauth_token= После этого вы получаете токен авторизации и указатель на шард (конкретный сервер Evernote), который понадобится вам в дальнейшем при работе с API. В Python есть библиотека для работы с OAuth, но я решил ее не использовать: не стал усложнять процесс, сводящийся к генерации ссылок и обработке результатов, тем более что обычная схема OAuth выглядит сложнее, чем использованная в Evernote (за это разработчикам огромная благодарность - удалено почти все ненужное).



Питон и библиотеки

Из библиотек, которых нет в стандартной сборке Python, боту требуется sqlite3, xmpp-py и, конечно, API Evernote (что также включает в себя бережливость ).

Для работы необходим Python 2.6 (из-за использования "с" утверждениями ) или Python 2.5, импортирующий with_statements из модуля __future__.

Источник

Хабр не дал мне вставить полтысячи строк кода с подсветкой, поэтому я Я разместил весь код на snipt.org. .

Я не большой программист, но это работает. :) Пользуйтесь, хабралюди! Теги: #jabber #evernote #python #oauth #python

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.