我正在尝试使用 scribe 在 Java 中参照 php 代码实现 2 腿 OAuth。我相信我已经非常接近破解这个了。我当前的错误是:
**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();
有人可以告诉我我可能出错的地方吗?我知道我很接近 - 非常接近....
尝试将 $iframelink = http://www.pesapal.com/api/PostPesapalDirectOrderV4 更改为 $iframelink = https://www.pesapal.com/api/PostPesapalDirectOrderV4
从 http 实时更改为 https 时遇到了同样的问题。