Помогите с твиттером echo & oauth в моем приложении rails - PullRequest
0 голосов
/ 02 ноября 2010

Мое приложение требует от пользователей, чтобы войти в систему с их учетной записью Twitter!Я использую tardate oauth lib (от Пола Галлахера).Это отлично работает.Я хочу создать API для своего веб-сайта (фактически часть аутентификации пользователя).Twitter Basic Auth устарел, и теперь твиттер использует твиттер-эхо.Если пользователь хочет загрузить файл через API в моем приложении, он должен включить в свой запрос вышеуказанный заголовок.Итак, моя проблема: (я полагаю, что заголовок попадает в твиттер-API напрямую, а твиттер возвращает в моем URL ответ ... это правильно?)

как мое приложение может обработать ответ твиттера?JSON, который содержит информацию о пользователе (или отрицательный ответ 401), чтобы продолжить загрузку или нет.Что-то вроде twitpic API делает. (http://dev.twitpic.com/docs/2/upload/) или аналогичные сервисы.

curl -v -H 'X-Auth-Service-Provider: https://api.twitter.com/1/account/verify_credentials.json' -H 'X-Verify-Credentials-Authorization: OAuth realm="http://api.twitter.com/",
oauth_consumer_key="yTrEIQH6jhtmLUypg8T5", oauth_signature_method="HMAC-SHA1",  
oauth_token="514797-YuI8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWTyu",oauth_timestamp="1271323750",
oauth_nonce="oYu6nMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7U9Y", 
oauth_version="1.0", oauth_signature="CV4bTfE7Rs9J1kafTGwufLJdspo%3D"' -F "file=@/path/to/file" http://localhost:3000/api/upload.xml

моя загрузка по умолчанию в настоящее время работает для простой загрузки через API. Без информации о пользователе. Но таким образом мое приложение не 'Не знаю владельца файла!

def upload
        file = File.new
        file.file = params[:file]
        # ... extra code
        respond_to do |format|
            if file.save                
                format.xml  { render :xml => file, :status => :created, :location => file }
            else
                format.xml  { render :xml => file.errors, :status => :unprocessable_entity }    
            end
        end
     end

У вас есть идеи, как может быть логика кодирования?

Любая помощь будет высоко оценена: -)

Ответы [ 2 ]

0 голосов
/ 10 ноября 2010

Я думаю, что лучший способ - захватить заголовки и затем использовать Patron ..

auth_headers = request.headers["X-Verify-Credentials-Authorization"]

Патрон может отправить запрос на https://api.twitter.com/1/account/verify_credentials.json, а затем проверить соответствующий статус!

0 голосов
/ 10 ноября 2010

Я не уверен, как это будет работать в вашем конкретном случае, и я не уверен, что вы рассматриваете возможность использования других плагинов, но я использовал OmniAuth и OmniSocial, которые фактически созданы из omniauth.

Вы можете найти несколько великолепных скринкастов по омниауту здесь от Райана Бейтса. Даже если вы не планируете использовать omniauth, вы можете найти полезную логику в его скринкастах для вашей ситуации.

OmniAuth

Часть 1

Часть 2

ИЛИ здесь можно посмотреть всевозможные

Omnisocial

Интродукция омнисоциала

Всезнайка на Github

Надеюсь, это поможет вам! Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...