将 Magento Rest API 与 angularjs 和 OAuth 结合使用

问题描述 投票:0回答:2

编辑: TL;DR
有没有人使用 Magento Rest API 和 angularjs 并可以给我一些关于如何开始使用 OAuth 的提示?

我正在尝试将 magento Rest API 与 angularjs 一起使用。我的问题是我什至无法让启动端点工作。

计算我使用的签名https://github.com/bettiolo/oauth-signature-js

var initEndpointUrl = "http://magentoserver.com/oauth/initiate"

var parameters = {
    oauth_callback: callback,
    oauth_consumer_key : consumerKey,
    oauth_nonce : nonce,
    oauth_signature_method : signatureMethod,
    oauth_timestamp : timestamp            
}

var signature = oauthSignature.generate('POST', initEndpointUrl, parameters, consumerSecret);

我尝试了两种不同的方法:

1:发送带有Authorization Header的参数:

var authHeader = "OAuth "+ 
    "oauth_callback=" + callback + "," +
    "oauth_consumer_key=" + consumerKey + "," +
    "oauth_nonce=" + nonce + "," +
    "oauth_signature_method=" + signatureMethod +  "," +
    "oauth_timestamp=" + timestamp + "," +
    "oauth_signature=" + signature;   

$http({
    method: 'POST',
    url: initEndpointUrl,
    header: {
        'Authorization': authHeader
    }
})

这种方法的问题是,我从服务器收到针对 OPTIONS 方法的 400 错误请求。这是由于身份验证标头导致请求不是“简单请求”造成的(据我所知)。这在飞行前会调用 OPTIONS 方法。

2:将参数作为url参数发送:

http://magentoserver.com/oauth/initiate?
    oauth_callback=http%3A%2F%2Flocalhost&
    oauth_consumer_key=12345&
    oauth_nonce=67890&
    oauth_signature_method=HMAC-SHA1&
    oauth_timestamp=1234567890&
    oauth_signature=abcdefg1234567 

通过这种方法,我取得了更大的成功,并且能够添加所有必需的参数,直到检查签名为止,这导致 401 oauth_problem=signature_invalid

我对 OAuth 很陌生,所以我想也许生成签名的调用不正确。另一方面,我可以想象,通过更改参数(以及 URL),我使签名无效。

有人有这方面的经验吗?预先感谢!

PS:我已经在 https://magento.stackexchange.com/ 上发布了这个,因为我认为它会更具体。

angularjs magento oauth magento-rest-api
2个回答
1
投票

经过 Nic Raboy 的大力帮助,我们将其包含在他的 OAuth 库中:

ng-cordova-oauth

该库完成所有签名、随机数计算以及其他所需的一切。但它确实需要在 cordova 上运行(使用 inAppBrowser 插件)。

在此之前,必须对 Magento 进行一些修复:

OAuth 激活(如果发起定向到 404)

OAuth 修复缺少 form_key 的问题

OAuth 修复重定向到仪表板

最后一个并没有立即起作用,但这是正确的方向。如果有人对此有疑问,请随时提问。我真的很惊讶花了这么多精力才让它运行。

谢谢 Nic,现在获取 access_token 真的很容易:)


0
投票

我只是在 PHP 中使用 OAuth。希望对你有帮助。

查看此示例链接。当使用“oauth/initiate”时,oauth_callback 包含在 URL 中。双面都写

http://www.magentocommerce.com/api/rest/authentication/oauth_authentication.html#OAuthAuthentication-PHPExamples

我看到其他 OAuth 标头,每个值都使用双引号作为 oauth_signature_method="HMAC-SHA1"

© www.soinside.com 2019 - 2024. All rights reserved.