当前位置: 首页 > 知识库问答 >
问题:

将Magento Rest API与angularjs和OAuth一起使用

鲜于宏义
2023-03-14

编辑:TL;DR
是否有人在angularjs中使用Magento Rest API,并能给我一些关于如何开始使用OAuth的提示?

我正在尝试使用magento Rest API和angularjs。我的问题是我甚至没有让启动endpoint工作。

要计算我使用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:使用授权标头发送参数:

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),我使签名无效。

有人有这方面的经验吗?提前谢谢!

附言:我已经把这个发到网上了https://magento.stackexchange.com/,因为我觉得它会更具体。

共有2个答案

呼延运恒
2023-03-14

我只是在PHP中使用OAuth。我希望它能帮助你。

看看这个例子链接。使用“oauth/initiate”时,URL中包含oauth_回调。两面都写

http://www.magentocommerce.com/api/rest/authentication/oauth_authentication.html#OAuthAuthentication-PHP示例

我还看到了其他OAuth头文件,其中每个值都使用双引号作为OAuth_signature_method=“HMAC-SHA1”

邵正雅
2023-03-14

在Nic Raboy的大量帮助下,我们将其包含在他的OAuth库中:

Ng-cordov-oauth

该库执行所有签名、随机数计算和其他所需的一切。然而,它需要在科尔多瓦上运行(使用inAppBrowser插件)。

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

如果initiate指向404,则激活OAuth

OAuth修复丢失的form_键

OAuth修复重定向到仪表板

最后一个在瞬间不起作用,但它是正确的方向。如果有人对此有疑问,请随时提问。我真的很惊讶,它花了这么多努力才运行起来。

谢谢尼克,现在真的很容易得到access_token:)

 类似资料:
  • 问题内容: 我想使用查询字符串成功登录后将用户重定向到另一个页面。如果我复制并粘贴到浏览器的地址栏中,则可以正常工作。但是如果我用 网址看起来像 如何将%3F解码为“?” ?谢谢 问题答案: 它应该是

  • 问题内容: 我希望能够使用Protractor测试我的Angular应用程序。由于我使用RequireJS,因此无法在DOM中使用指令,这就是为什么我使用手动引导Angular的原因。 量角器输出如下错误输出: 错误:在页面上找不到Angular :重试以寻找超出的角度 然后,我意识到量角器文档中有一个警告: 对于使用angular.bootstrap手动引导的应用,Protractor不能立即使

  • 我创建了一个新的VS2012项目使用热毛巾模板,作为回报,使用Durandal,淘汰赛和微风。 我想使用jaydata而不是微风,对于ui层,我想使用出色的asKendoDataSource()功能来为kendoui网格供电。 我按照所有的指示,使kendoui工作良好的杜兰达尔。这很好。 我有一个模型,在这个模型中,我获取jaydata实体并在其上运行asKendoDataSource()。“我

  • 我正在尝试学习python、mongodb和flask,我正在使用Miguel Grinberg提供的非常优秀的博客,他在博客上提供了一套很棒的教程。米格尔格林伯格。通用域名格式 我有一个小的RESTful服务器工作正常,但现在想从mongo而不是mysql中提取东西 我可以使用下面的代码拉出mongo记录,但我很难让它呈现出来。 我在下面的代码中使用了箭头来显示我在哪里挣扎,我认为缺乏经验。任何

  • 问题内容: 在我们的应用程序中,我们有一个要使用SSL的付款页面,因为我们正在处理信用卡信息。我们已经为apache制定了重写规则,以将对特定页面的请求重定向到HTTPS -它处理对支付页面(http://oursite.com/pay)的任何直接请求。 但是,我们网站中的大多数导航都是通过相对URL并在angularjs中使用而完成的,我们发现apache不能捕获这些请求,因此可以在没有SSL的

  • 问题内容: 我正在尝试在AngularJS指令中使用过滤器,但不确定如何使用。从邮件列表上的一些信息看来,您应该可以注入$ filter并使用它,但是我不确定如何/在何处调用它。 我的指令当前如下所示: 虽然不能正常工作。如何在指令中过滤数据? JSfiddle可以从http://jsfiddle.net/VDLqa/4/获得, 在此先感谢您的答复。 问题答案: 您正在指令()上创建新的隔离范围,