Вызов OAuth для токена запроса приводит к ошибке 404 - PullRequest
1 голос
/ 18 августа 2011

У меня невероятно трудное время, чтобы гем OAuth работал правильно для API Flickr.Я пытаюсь сгенерировать токен запроса, используя этот код:

user_oauth = OAuth::Consumer.new(consumer_key, consumer_secret, :site => "https://secure.flickr.com/services")
request_token = user_oauth.get_request_token(:oauth_callback => callback_url)

Каждый раз, когда я запускаю этот код, он вызывает исключение «OAuth :: Unauthorized (404 Not Found)» при вызове .get_request_token.

Я получил свою конечную точку от: http://www.flickr.com/services/api/misc.overview.html

Мой гем OAuth использует путь по умолчанию request_token, который должен работать с Flickr в соответствии с: http://www.flickr.com/services/api/auth.oauth.html#request_token Я также пытался использоватьконечная точка, которую использует эта ссылка (http://www.flickr.com/services)

Когда я вызываю .request_token_url для моего объекта OAuth :: Consumer, он возвращает «https://secure.flickr.com/services/oauth/request_token",, к которому я могу получить доступ в своем браузере. Думая, что API flickr может работать только с GET-запросами»Я изменил метод OAuth на GET, и он все еще не работал.

Я использовал этот же код на разных API раньше, и он работал, поэтому я не совсем уверен, что делать с этимточка. Любая помощь будет оценена!

Ответы [ 2 ]

6 голосов
/ 10 сентября 2011

У меня была такая же проблема.Метод Request_token_url возвращает правильный URL-адрес, но я наблюдаю за истинно запрошенным URL-адресом Wireshark, и там был www.flickr.com/oauth/request_token. Поэтому ему необходимо переместить / services path from: site option в paths options.

Этот код работает для меня, теперь:

    consumer = OAuth::Consumer.new(key, secret, 
            :site               => "http://www.flickr.com", 
            :request_token_path => '/services/oauth/request_token', 
            :authorize_path     => '/services/oauth/authorize',
            :access_token_path  => '/services/oauth/access_token')
    request_token = consumer.get_request_token
0 голосов
/ 29 августа 2011

У меня была та же проблема, но мой URL обратного вызова был "oob", который, как говорят, используют, если у вас нет доступа к браузеру. В любом случае я снял цитаты с oob, и теперь это работает.

...