我正在尝试将我的 Ruby on Rails 应用程序集成到 Magento,我已经提出了初始请求,获得了授权,我相信我得到了最终的令牌,但我不能确定。以下是我的回复:
(这里有很多东西,所以请跳过我删除导入部分的地方)
.....
"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”
这是当我在管理中创建 REST 消费者时,magento 给我的。
然后是一堆重复的令牌和秘密,但它们都是相同的并且属于“凭据”标签:
“token"=>"r8apb2rcgci9ry5hugcuiqlnwdi0evc1"
“secret"=>"8pnyogb4048toujt5rjoq26tqh50vkv5”
最后,还有 oauth_token 和 oauth_verifier:
“oauth_token"=>"jj2dbrea7dimxwc0twibyoikxjazvs6y"
“oauth_verifier"=>"83idqmtmb76fe5axad1rf7lhfa3wqxki”
所以这是我的问题......
我需要在将来的请求中传递哪些参数以立即进行身份验证,而无需重新生成令牌?
目前在我的应用程序中,每次我发出请求时,它都会不断地将我发送回magento 中的用户确认屏幕以进行授权。
另外,我如何发出请求来获取我的 magento 用户 ID、名称等……以便我可以使用此信息在 Rails 应用程序中生成用户?
谢谢!
您拥有访问令牌对象,因此您应该能够执行以下操作:
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