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

放心OAuth 1.0a如何在请求中同时插入头参数和查询参数

杜经艺
2023-03-14

Magento的1.9RESTAPI需要授权头和oauth查询参数,但oauth()只允许OAuthSignature。标题或查询字符串

given().auth().oauth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, 
            SECRET_TOKEN,OAuthSignature.HEADER)

我追踪代码到com.jayway.restassured.internal.httpAuthConfig.process(...),但我不确定从这里做什么。

问:有没有过滤器或某种html" target="_blank">方法可以让我强制两者?

TL;DR我首先提到这个:如何使用POSTMAN rest客户端与Magento REST api和Oauth。如何获得令牌和令牌秘密?最后的陈述

请注意,您必须选中“将参数添加到标头”复选框,以便Magento REST调用正常工作。

通过使用Postman,OAuth 1.0在我选中复选框时工作,不选中复选框时失败,403访问被拒绝。这与我使用OAuthSignature时得到的响应相同。用rest-assured查询字符串。

WORKS: Sent from Postman (add params to header)

GET /api/rest/products?oauth_consumer_key=<my-consumer-key>&oauth_token=<my-oauth-token>&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1471929347&oauth_nonce=LJ3o2K&oauth_version=1.0&oauth_signature=0Any8rQ+XjbnWcdXmpHFujg1V7o= HTTP/1.1
Host: dockerized-magento.local
Connection: keep-alive
Authorization: OAuth oauth_consumer_key="<my-consumer-key>",oauth_token="<my-oauth-token>",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1471996573",oauth_nonce="ElK9Fx",oauth_version="1.0",oauth_signature="SvDfMxrWj1O0P2%2FWPOomEVEb93c%3D"
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36
Postman-Token: 9348e805-3c6f-54d7-082f-a1458164725d
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

放心OAuthSignature。QUERY_STRING

Doesn't Work: OAuthSignature.QUERY_STRING

GET /api/rest/products?oauth_nonce=-316324336&oauth_signature=TlANZu5ogxowYJCpr2V7W448tjw%3D&oauth_token=<my-oauth-token>&oauth_consumer_key=<my-consumer-key>&oauth_timestamp=1471996938&oauth_signature_method=HMAC-SHA1&oauth_version=1.0 HTTP/1.1
Accept: */*
Content-Length: 0
Host: dockerized-magento.local
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.1 (Java/1.8.0_77)
Accept-Encoding: gzip,deflate

RESP: {"messages":{"error":[{"code":403,"message":"Access denied"}]}}

使用不带“将参数添加到标题”的邮递员进行相同的失败响应)

Doesn'T WORK: Sent from Postman (NO - add params to header)

GET /api/rest/products?oauth_consumer_key=<my-consumer-key>&oauth_token=<my-oauth-token>&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1471976516&oauth_nonce=OTWTNW&oauth_version=1.0&oauth_signature=Dsh5TEErEC9rMbKakta1v2E7ZTw= HTTP/1.1
Host: dockerized-magento.local
Connection: keep-alive
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36
Postman-Token: f9800e1c-b259-f025-cf48-68e483283869
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

Response: {"messages":{"error":[{"code":403,"message":"Access denied"}]}}

共有1个答案

龙晟睿
2023-03-14

犯了错误,HEADER选项工作正常。上面的邮递员链接工作正常,而且很有帮助,让我相信我需要网址参数和标题。我回到邮递员和删除的url参数后,添加参数到标题。这工作得很好。我回去发现我的消费者密钥错了。

提示:Magento消费者密钥和密码不可“复制”,请使用firebug!

 类似资料:
  • 问题内容: 嗨,我想将get查询参数转换为Go中的结构,例如,我具有以下结构: 我有一个发送GET请求该情况下,用户可以指定可选参数,,,,,,,。 如果这些参数是在正文中发送的,那么我会这样做: 但是我无法在请求中发送正文,所以解决方案是什么呢?而不是单独获取每个参数然后将其放入结构中? 问题答案: 使用大猩猩的包装 该包装正是为此而发明的。 您可以使用struct标记]来告诉如何将URL参数映

  • 问题内容: 当我尝试使用此查询时,我收到一条错误消息,指出Perameter电子邮件不存在,我确定变量:email,login_pass,payment_method,operateur是有效的并且存在。 我尝试删除引号,但我得到了 您的Sql语法有错误,请在第1行的’:email,:login_pass,:payment_method,:avecpuce)’附近查看与您的SQL Server对应

  • 我试图在rest-assured请求中传递请求体参数,但它返回给我的是非常令人沮丧的,我尝试了不同的方法,我尝试了类似字符串的JSON格式,但不起作用也总是相同的错误。错误消息值\u错误。缺少所有身体参数。 测试代码:

  • 下面是mule flow xml文件和自定义请求转换器 下面是自定义请求转换器的代码

  • 我目前正在试用Apache camel(作为路由引擎)。我知道Camel支持多个DSL,并且可以使用Java(JavaDSL)或Spring(Spring DSL)进行配置。 问题: 我有以下Spring DSL配置。这个想法是,如果传入的请求具有名为“name”的头参数,它将命中当子句或其他方式将请求路由到google: 我希望上面的配置只适用于Header参数。然而,我注意到,这种配置甚至适用

  • 我有一个使用. NET 6 Web API的应用程序。一旦用户登录到应用程序,关于该用户的基于小上下文的信息被附加到查询参数。 API中AuthPolicy的一部分是,当调用endpoint时,这些查询参数必须存在,即使该endpoint没有使用它们。 例如,此 终结点具有在请求正文中传递的实际输入,但 AuthPolicy 要求查询参数存在,即使未使用它也是如此。 有效EX: 无效的EX: 有没