我试图使用scribe在Java中实现2脚OAuth并参考php代码。 我相信我非常接近破解这一点。我目前的错误是:
** OAuth - response.getBody:问题:signature_invalid |建议:> |
response.getCode():200 **
我怀疑在签署请求时,这与令牌的形式或缺少消费者对象有关。 在php中,代码是:
$consumer = new OAuthConsumer($consumer_key, $consumer_secret);
//post transaction to pesapal
$iframe_src = OAuthRequest::from_consumer_and_token($consumer, $token, "GET", $iframelink, $params);
$iframe_src->set_parameter("oauth_callback", $callback_url);
$iframe_src->set_parameter("pesapal_request_data", $post_xml);
**$iframe_src->sign_request($signature_method, $consumer, $token);**
从最后一行开始,为了对请求进行签名,使用者也作为参数传递。
我的代码如下:
OAuthService service = new ServiceBuilder()
.provider(something.class)
.signatureType(SignatureType.QueryString)
.apiKey(consumer_key)
.apiSecret(consumer_secret)
.callback(callback_url)
.build();
Token token = new Token("", "");
OAuthRequest request = new OAuthRequest(Verb.GET, iframelink);
request.addBodyParameter("pesapal_request_data", post_xml);
request.addOAuthParameter(OAuthConstants.SIGN_METHOD, signature_method);
service.signRequest(token, request);
Response response = request.send();
有人可以告诉我可能出错的地方吗? 我知道我很近 - 非常接近......
答案 0 :(得分:0)
尝试将$ iframelink = http://www.pesapal.com/api/PostPesapalDirectOrderV4更改为$ iframelink = https://www.pesapal.com/api/PostPesapalDirectOrderV4
从http到https的实时更改时出现同样的问题。