2011-08-17 187 views
1

我有一个难以置信的困难时间让OAuth gem正常工作于Flickr API。我想使用此代码生成请求令牌:OAuth调用请求令牌会产生404错误

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) 

每当我运行此代码,它抛出在调用.get_request_token异常“的OAuth ::未经授权(404未找到)”。

我得到了我的终点距离: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)

当我在我的OAuth :: Consumer对象上调用.request_token_url时,它返回“https://secure.flickr.com/services/oauth/request_token”,我可以访问它我的浏览器。考虑到flickr API可能只适用于GET请求,我将OAuth方法更改为GET,但仍然无效。

我以前在不同的API上使用过这个完全相同的代码,所以我不太确定此时该做什么。任何帮助,将不胜感激!

+0

什么是您传递作为callback_url的网址是什么?从我看到的你不需要指定它,但也许这个URL是404的。 – efalconer

+0

我在我的应用程序中使用路由。我知道回调的工作原理,因为我已经使用了与其他API完全相同的回调URL,并且它可以工作。此外,正在对.get_request_token调用时生成404,而不是在授权应用程序后将其重定向回来。 – jjb123

+0

与所有雅虎服务一样,Flickr要求您提供http或https回叫网址,否则它不会让您获得请求令牌。此外,雅虎的错误反应很奇怪,你可能会因为这个原因而获得404。 –

回答

6

我有同样的问题。 Request_token_url方法返回正确的url,但我通过wireshark观看了真正请求的url,并且有www.flickr.com/oauth/request_token ..所以它需要将/ site选项中的/ services路径移动到paths选项中。

此代码的工作对我来说,现在:

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

当连接到Intuit的IPP接口时,拆分:site和:authorize_path也解决了我的问题。 – Forrest

0

我有同样的问题,但我的回调网址是“oob”,他们说,如果您无法访问浏览器,将使用它。无论如何,我从oob的报价,现在它的作品。