2011-08-17 48 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的報價,現在它的作品。