0

我正在尝试使用 Scribe 上传照片,但似乎无法解决错误:

Authentication challenged received is null

而且我不知道,由于缺乏有关如何解决此问题的文档。

相关代码为:

try{
        OAuthRequest r = new OAuthRequest(Verb.POST, url);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        toSend.writeTo(out);
        r.addPayload(out.toByteArray());
        r.addHeader(toSend.getContentType().getName(), toSend.getContentType().getValue());

        OAuth10aServiceImpl oauth = (OAuth10aServiceImpl)oauthImpl;
        OAuthRequest sr = new OAuthRequest(Verb.GET, serviceProvider);
        sr.addOAuthParameter(OAuthConstants.TOKEN, oauthToken.getToken());
        sr.addOAuthParameter(OAuthConstants.REALM,"http://api.twitter.com/");
        oauth.addOAuthParams(sr, client._oauthToken);

        r.addHeader("X-Auth-Service-Provider",serviceProvider);
        String oauthHeader = oauth.api.getHeaderExtractor().extract(sr);
        r.addHeader("X-Verify-Credentials-Authorization", oauthHeader);

        System.out.println(r.getHeaders().get("X-Verify-Credentials-Authorization"));

        return r.send();
    }catch(Exception e){
        e.printStackTrace();
        return null;
    }

我认为它与消费者密钥有关,因为它似乎没有添加到签名中,但我不太确定到底发生了什么:/

任何帮助,将不胜感激

4

1 回答 1

1

固定的。这是代码:

        OAuthRequest r = new OAuthRequest(Verb.POST, url);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        toSend.writeTo(out);
        r.addPayload(out.toByteArray());
        r.addHeader(toSend.getContentType().getName(), toSend.getContentType().getValue());

        OAuth10aServiceImpl oauth = (OAuth10aServiceImpl)client._oauth;
        OAuthRequest sr = new OAuthRequest(Verb.GET, serviceProvider);
        oauth.signRequest(client._oauthToken, sr);

        r.addHeader("X-Auth-Service-Provider",serviceProvider);
        String oauthHeader = sr.getHeaders().get("Authorization");
        r.addHeader("X-Verify-Credentials-Authorization", oauthHeader);

对于任何想知道它是如何工作的人来说,toSend它是一个HttpEntity包含文件和其他StringBody部分并且client._oauthToken是一个Token对象。r是我对 twitpic 的请求,并且serviceProvider是 Twitter API 验证凭据 url(在 yfrog 等某些服务上会发生变化)

于 2012-07-31T19:33:41.703 回答