不使用Scribe的双腿Oauth客户端

时间:2013-12-04 19:21:46

标签: java android oauth-2.0 scribe

我正在尝试对自定义服务器(不是我的)进行身份验证,该服务器应该接受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。不过,这个客户端似乎正在做三条腿的身份验证。

有什么想法吗?想法?

1 个答案:

答案 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();