Have just uploaded to Twitpic all correct!

Adding one single letter solves the problem. Name for the service
provider header should be:

"X-OAuth-Service-Provider"

and not

"X-Auth-Service-Provider"

as it stated here http://dev.twitter.com/pages/oauth_echo and here
http://dev.twitter.com/pages/oauth_echo

--Choock

On 8 фев, 00:43, Choock <d.cho...@gmail.com> wrote:
> Hello all,
>
> can anybody help me with TwitPic please? Just cannot figure out what
> am I doing wrong :(
>
> I'm trying to upload a pic making POST request 
> tohttp://api.twitpic.com/2/upload.json
> To do this I create required header mocking GET and signing it:
>
> HttpGet oauth_get = new HttpGet("https://api.twitter.com/1/account/
> verify_credentials.json");
>         signer.signRequest(oauth_get);
>
> (using Commons httpclient 4.1 and signpost)
>
> Then I cut out and modify header as required by TwitPic:
>
> String get_value =
> oauth_get.getFirstHeader("Authorization").getValue();
>         get_value = get_value.replaceFirst("OAuth ","OAuth realm=
> \"http://api.twitter.com/\";, ");
>
> Then I create actual POST request, add required headers and paramenets
> (key,message, file):
>
> HttpPost method = new HttpPost("http://api.twitpic.com/2/
> upload.json");
>         method.setHeader("X-Verify-Credentials-
> Authorization",get_value);
>         method.setHeader("X-Auth-Service-Provider","https://
> api.twitter.com/1/account/verify_credentials.json");
>         MultipartEntity entity;
>         FileBody media = new FileBody(pic,"image/png");
>
>         entity = new
> MultipartEntity(null,null,Charset.forName("UTF-8"));
>         entity.addPart("media",media);
>         try
>         {
>             for(NameValuePair pair:params)
>             {
>                 entity.addPart(pair.getName(),new
> StringBody(pair.getValue(),Charset.forName("UTF-8")));
>             }
>             method.setEntity(entity);
>         }
>         catch(UnsupportedEncodingException e)
>         {
>             logger.log(Level.WARNING, e.toString());
>         }
>         return method;
>
> And then I send the request (method). Here is what I receive:
>
> WARNING: Authentication error: Unable to respond to any of these
> challenges: {}
> and right after 401 error code.
>
> It is important that direct call to Twitter for verification:
>
> HttpGet method = new HttpGet("https://api.twitter.com/1/account/
> verify_credentials.json");
>         signer.signRequest(method);
>         return method;
>
>  returns OK what means all authentification parameters correct. So, it
> is the header for TwitPic. Can anybody point out what's wrong with how
> am I creating it?
>
> Thank you.

-- 
Twitter developer documentation and resources: http://dev.twitter.com/doc
API updates via Twitter: http://twitter.com/twitterapi
Issues/Enhancements Tracker: http://code.google.com/p/twitter-api/issues/list
Change your membership to this group: 
http://groups.google.com/group/twitter-development-talk

Reply via email to