Как использовать Linq для Twitter внутри веб-службы?
Я пишу веб-приложение, которое использует Linq для Twitter, чтобы помочь пользователю управлять учетной записью Twitter. Я понимаю, что мне нужно скрыть свой ключ потребителя и секрет потребителя на стороне сервера, чтобы предотвратить его раскрытие.
Для этого я знаю, что могу использовать MvcAuthorizer и использовать Linq To Twitter на стороне сервера моего приложения MVC. Но что, если я хотел бы отделить код Linq To Twitter от веб-приложения и представить его как веб-сервис, размещенный отдельно от моего приложения MVC?
Таким образом, поток данных будет выглядеть так...
Клиент веб-браузера <-> Моя веб-служба (ServiceStack) <-> Linq to Twitter <-> API REST Twitter
Из прочтения документации на сайте Linq to Twitter и на сайте dev.twitter.com я понял, что мой процесс должен выглядеть примерно так:
- Пользователь нажимает какую-то кнопку в веб-приложении, которая запускает процесс авторизации
- Пользователь перенаправляется в твиттер и авторизует приложение для использования.
- Пользователь перенаправляется обратно на указанный мной URL-адрес обратного вызова. Мое приложение теперь имеет доступ к токенам OAuth пользователей через строку запроса в этом URL обратного вызова.
- Мое приложение где-то хранит эти токены OAuth
- Мой прокси-веб-сервис использует эти токены OAuth для запроса Twitter API от имени пользователя.
Я думаю, что могу сделать шаги 1-4, используя инструкции здесь о MvcAuthorizer.
Я не уверен, как это сделать. 5. Я думал, что должен получить сообщение UserTweetsRequest, которое я отправил в мой сервис. В сообщении будет указано имя пользователя Twitter. Внутри сервиса я просматривал сохраненные токены OAuth для этого пользователя, объединял их с моими потребительскими токенами, а затем использовал Linq To Twitter для выполнения запроса.
Если у меня теперь есть все токены потребителя и пользователя, мне нужно вызвать API Twitter через Linq to Twitter, какой авторизатор я должен использовать в своей реализации сервиса, чтобы это произошло? Должен ли я реализовать свой собственный?
1 ответ
Авторизаторы LINQ to Twitter предназначены для обхода процесса авторизации в Twitter и просто подписывают запрос, если у вас есть все 4 ключа. Похоже, что это так, поэтому вы можете использовать (почти) любой из авторизаторов в вашем веб-сервисе. Вы можете использовать SingleUserAuthorizer, MvcAuthorizer или WebAuthorizer, если вы предоставите все 4 учетных данных.
У меня есть демонстрация WCF на моей странице образцов. Возможно, вам потребуется обновить версию LINQ to Twitter с помощью образца, но это может быть полезно посмотреть.