2012-11-24 96 views
4

我試圖把我的ruby on rails應用程序集成到magento,並且我還有做出初始請求,獲得授權,並且我相信我得到了最終的標記,但是我無法確定。以下是我在我的迴應:Magento oauth和REST API麻煩

(有很多的東西在這裏,所以跳到哪裏挖出進口位)

..... 
"credentials"=> 
    {"token"=>"r8apb2rcgci9ry5hugcuiqlnwdi0evc1", 
    "secret"=>"8pnyogb4048toujt5rjoq26tqh50vkv5"}, 
"extra"=> 
    {"access_token"=> 
    #<OAuth::AccessToken:0x007fdd59893468 
    @consumer= 
     #<OAuth::Consumer:0x007fdd5995f928 
     @http=#<Net::HTTP mymagentocart.dev:443 open=false>, 
     @http_method=:post, 
     @key="ttuj6ok0ioziv7bcfwi8wprzqe6o4x1e", 
     @options= 
     {:signature_method=>"HMAC-SHA1", 
     :request_token_path=>"/oauth/initiate", 
     :authorize_path=>"/admin/oauth_authorize", 
     :access_token_path=>"/oauth/token", 
     :proxy=>nil, 
     :scheme=>:header, 
     :http_method=>:post, 
     :oauth_version=>"1.0", 
     :site=>"https://mymagentocart.dev"}, 
     @secret="b0maut2ftkg2wb3nm24t263720n7kxqa">, 
    @params= 
     {:oauth_token=>"r8apb2rcgci9ry5hugcuiqlnwdi0evc1", 
     "oauth_token"=>"r8apb2rcgci9ry5hugcuiqlnwdi0evc1", 
     :oauth_token_secret=>"8pnyogb4048toujt5rjoq26tqh50vkv5", 
     "oauth_token_secret"=>"8pnyogb4048toujt5rjoq26tqh50vkv5"}, 
    @secret="8pnyogb4048toujt5rjoq26tqh50vkv5", 
    @token="r8apb2rcgci9ry5hugcuiqlnwdi0evc1">}, 
"oauth_token"=>"jj2dbrea7dimxwc0twibyoikxjazvs6y", 
"oauth_verifier"=>"83idqmtmb76fe5axad1rf7lhfa3wqxki" 
..... 

我在訪問令牌中看到,我的鑰匙和祕密:

@key="ttuj6ok0ioziv7bcfwi8wprzqe6o4x1e" 
@secret="b0maut2ftkg2wb3nm24t263720n7kxqa」 

這是magento在管理員中創建REST消費者時給我的。

然後有一堆重複的令牌和祕密的,但他們都是一樣的,並在「憑證」的標籤掉落:

「token"=>"r8apb2rcgci9ry5hugcuiqlnwdi0evc1" 
「secret"=>"8pnyogb4048toujt5rjoq26tqh50vkv5」 

最後,還有的組oauth_token和oauth_verifier:

「oauth_token"=>"jj2dbrea7dimxwc0twibyoikxjazvs6y" 
「oauth_verifier"=>"83idqmtmb76fe5axad1rf7lhfa3wqxki」 

因此,這裏是我的問題......

其中哪些我需要與未來的請求傳遞給認證直線距離,而無需重新生成令牌?

在我的應用程序當前,每次我提出請求時,它都會一直髮送回magento的用戶確認屏幕進行授權。

另外,我怎樣才能讓我的magento用戶ID,名稱等的請求...所以我可以生成一個用戶在軌道應用程序使用此信息?

謝謝!

回答

0

你有訪問令牌的對象,所以你應該能夠做這樣的事情:

auth_hash["extra"]["access_token"].get("/api/rest/products") 

如果你想創建一個新的訪問令牌對象,你可以做我把鑰匙和令牌以下從你的例子:

@consumer=OAuth::Consumer.new("ttuj6ok0ioziv7bcfwi8wprzqe6o4x1e", "b0maut2ftkg2wb3nm24t263720n7kxqa", {:site => "https://mymagentocart.dev"}) 
@access_token = OAuth::AccessToken.new(@consumer, "r8apb2rcgci9ry5hugcuiqlnwdi0evc1", "8pnyogb4048toujt5rjoq26tqh50vkv5") 
@access_token.get("/api/rest/products") 

此頁面上看到「使用長住訪問令牌」:http://code.google.com/p/oauth-plugin/wiki/AccessToken

+0

那麼,這些組oauth_token和oauth_verifier值?另外,你是否知道如何在omniauth策略中設置它,而不是使用直接的oauth? – Nathan

+0

令牌和驗證者被交換爲訪問令牌。請參閱http://developer.yahoo.com/oauth/guide/oauth-auth-flow.html瞭解oauth流程的一步一步。查看omniauth-oauth庫,瞭解如何將其設置爲策略https://github.com/intridea/omniauth-oauth。 – brimil01

+0

完美,謝謝! – Nathan