2

我正在使用 magento api 开发电子商务 iOS 应用程序。目前我正在尝试使用 oAuth 身份验证来请求令牌。

我使用以下标头和它们的参数来验证用户。

请求 url = http://beta.localhost.com/oauth/initiate?oauth_callback= ' http://localhost/testapp '

OAuth 领域="http://beta.localhost.com/", oauth_consumer_key="pr9vx4i46lc8jv8mmiu6z2w50p9an43x", oauth_nonce="8QSHUZFRWRC5VGN3", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1354356514", oauth_version=1.0", “ucKs4DyFbKv6MJ1l2%2Fx4NvF819A%3D”

我收到错误: oauth_problem=signature_invalid&debug_sbs=szeWMR2jNONabHyS3Ui7FIF3iPc=

我已经尝试了所有相同的方法,例如 twitter 身份验证,但我正在努力解决同样的问题

而且我会尝试将这些方法包含在高级休息客户端中,但我会收到不同的错误消息

我的 Rest 客户端响应页面截图。

在此处输入图像描述 在此处输入图像描述

通过接收令牌以帮助我继续执行此 magento api 以进行进一步的步骤。

4

2 回答 2

2

问题是 OAuth 签名错误,Magento 错误响应清楚地表明了这一点。

调试签名过程是一个相当困难的过程,要通过 StackOverflow 问题来完成。查找和修复错误的最佳方法是在您自己的计算机上本地执行此操作。您需要通过Magento编写签名的方式(检查Zend_Oauth_Http_Utility::sign()方法,它将引导您进入Zend_Oauth_Signature_Hmac课堂)并逐步将过程与iOS侧的过程进行比较。这将帮助您找到不同之处。

大多数情况下,出现这样的问题是由于三个原因:

  1. 数据部分的错误顺序(在当前情况下 - 您的 'oauth_*' 参数),已处理以获取签名。
  2. 签名算法错误,自己实现时
  3. 为了将二进制签名转换为字符串并通过 HTTP 传递而进行了错误的编码

比较 Magento 和 iOS 进程及其中间结果,将帮助您找到它们开始不同的步骤。因此,您将能够理解需要修复的内容。

于 2012-12-01T22:41:10.097 回答
2

1) 获取 oAuth 令牌

oauth \
  --verbose \
   --query-string \
   --consumer-key v484mnii2jyswedm6uo2cfcjay7uy49snws \
   --consumer-secret koay6845che7giy5lr17gnrhckkbhf8h5 \
   --access-token-url http://www.yourstore.com/magento/oauth/token \
   --authorize-url http://www.yourstore.com/magento/oauth/authorize \
   --request-token-url http://www.yourstore.com/magento/oauth/initiate \
   authorize

Server appears to support OAuth 1.0a; enabling support.
Please visit this url to authorize:
http://www.yourstore.com/magento/oauth/authorize?oauth_token=ey6fokp0pbzwr1016eb528y5xw1ak5ji

Please enter the verification code provided by the SP (oauth_verifier):
YOUR_CODE_HERE

Response:
  oauth_token_secret: g9kyz8c7zv868d58eav1muih3gxvq763
  oauth_token: aqvlfv9tuexn0mqiydgkaff4ixxg8743c

您访问的授权 url 将要求您登录(作为客户,除非您使用管理员授权 url:/admin/oAuth_authorize)。您将登录然后像这样授权客户端。

在此处输入图像描述

成功登录并授权后,您应该会看到此对话框,您需要将验证程序代码复制到 oauth 命令行中以完成该过程。

在此处输入图像描述

2) 使用 oAuth 令牌进行 API 调用

oauth \
    --consumer-key v484mnii2jyswedm6uo2cfcjay7uy49snws \
    --consumer-secret koay6845che7giy5lr17gnrhckkbhf8h5 \ 
    --token aqvlfv9tuexn0mqiydgkaff4ixxg8743c \
    --secret g9kyz8c7zv868d58eav1muih3gxvq763 \ 
    --uri http://www.yourstore.com/magento/api/rest/products \
    debug

请参阅此http://www.aschroder.com/2012/04/introduction-to-the-magento-rest-apis-with-oauth-in-version-1-7/

于 2012-12-26T08:05:00.510 回答