Java 使用Scribe,OAuth Echo不会';我似乎无法与Twitpic合作

Java 使用Scribe,OAuth Echo不会';我似乎无法与Twitpic合作,java,oauth,scribe,Java,Oauth,Scribe,我正在尝试使用Scribe上传照片,但似乎无法获得错误: Authentication challenged received is null 我也不知道,因为缺乏关于如何解决这个问题的文档 有关守则如下: try{ OAuthRequest r = new OAuthRequest(Verb.POST, url); ByteArrayOutputStream out = new ByteArrayOutputStream(); toSend.w

我正在尝试使用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;
    }
我认为这是消费者密钥的问题,因为它似乎没有添加到签名中,但我不太确定到底发生了什么:/


任何帮助都将不胜感激。代码如下:

        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
部分以及
客户端。_oauthToken
是一个
令牌
对象
r
是我对twitpic的请求,
serviceProvider
是TwitterAPI验证凭据url(在某些服务(如yfrog)上更改)

哦,是的,我更改了Scribe某些部分的可见性,以便访问我需要的部分