我正在尝试对自定义服务器(不是我的)进行身份验证,该服务器应该接受2脚和3脚身份验证。由于我正在针对此服务器验证我的服务器应用程序,我认为2-legged最适合此处。我只需要为将来的调用存储auth令牌,当它到期时,显然重复这个过程。
因此,按照此tutorial和此other tutorial,我创建了我的Scribe uber简单客户端:
OAuthService service = new ServiceBuilder()
.provider(DummyAPIProvider.class)
.apiKey("mykey")
.apiSecret("mysecret")
.build();
OAuthRequest request = new OAuthRequest(Verb.GET, "http://orion.lab.fi-ware.eu:1026/version");
Token accessToken = new Token("", "");
String pepe = accessToken.toString();
service.signRequest(accessToken, request);
System.out.println(pepe);
Response response = request.send();
System.out.println(response.getBody());
ret = response.getBody();
服务器的响应始终为:
Auth-token not found in request header
鉴于该消息,我不确定是否必须在请求中包含auth-token ...如果是这样......任何想法如何?
另一方面,我有一个能够进行此身份验证的Javacript客户端,主要由三个文件组成:config.js,oauth.js和server.js(它使用Node和express)。检查here。不过,这个客户端似乎正在做三条腿的身份验证。
有什么想法吗?想法?
答案 0 :(得分:0)
我在服务上设置了signatureType(SignatureType.Header),并使用了2脚提供者示例类SimpleGeoApi;它对我有用!
final OAuthService service = new ServiceBuilder()
.provider(SimpleGeoApi.class)
.apiKey("mykey")
.apiSecret("mysecret")
.signatureType(SignatureType.Header)
.build();
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
OAuthRequest request = new OAuthRequest(Verb.GET, "http://myweb.com/chapters.json");
service.signRequest(OAuthConstants.EMPTY_TOKEN, request);
Response response = request.send();
Log.w("TEST", response.getCode() + " ");
Log.w("TEST: ", response.getBody());
return null;
}
}.execute();