Hi,

Check my xAuth implementation in TwAPIme, www.twapime.com. Maybe you can
find what's wrong with your code.

Regards,
Ernandes

On Wed, Aug 18, 2010 at 7:42 AM, Tom van der Woerdt <i...@tvdw.eu> wrote:

> The problem is that the last time I did Java (this is Java, right?) was
> ages ago (I was 12 back then) so I don't really know what the code is
> doing. The code looks fine to me, but like I said, I don't know Java
> very well.
>
> Can you show the actual request you make, instead of code? Like the
> "POST /1/statuses/update.json HTTP/1.1" part. Also include the base
> string which you use.
>
> Tom
>
>
> On 8/18/10 12:38 PM, LINUXGEEK wrote:
> > Thanks for the replay i was waiting for your replay
> >
> > here is my post body
> >
> > String postBody = "status="
> >                               + URLUTF8Encoder.encode("Test message");
> >
> > here is the base String
> >
> > String baseString = "POST&"
> >                               + URLUTF8Encoder
> >                                               .encode("
> http://api.twitter.com/1/statuses/update.json";)
> >                               + "&oauth_consumer_key%3D" + "my consumer
> key"
> >                               + "%26oauth_nonce%3D"+oauth_nonce+"a"
> >                               +
> "%26oauth_signature_method%3D"+oauth_signature_method
> >                               + "%26oauth_token%3D"+auth_token
> >                               + "%26oauth_timestamp%3D"+oauth_timestamp
> >                               + "%26oauth_version%3D"+oauth_version +
> "%26"
> >                               + URLUTF8Encoder.encode(postBody);
> >
> >
> >
> >       String signingSecret = URLUTF8Encoder.encode("my Secret key")+ "&"
> +
> > URLUTF8Encoder.encode("auth_secret");
> >
> >
> >
> > here is my signature
> >
> >               String signature =
> URLUTF8Encoder.encode(hmacsha1(signingSecret,
> > baseString));
> >
> > here is my header
> >
> >
> > String header = new StringBuffer("OAuth oauth_nonce=\"").append(
> >                               oauth_nonce).append(
> >                               "\", oauth_signature_method=\"").append(
> >                               oauth_signature_method).append(
> >                               "\", oauth_timestamp=\"").append(
> >                               oauth_timestamp).append(
> >                               "\", oauth_consumer_key=\"").append("my
> consumer key")
> >                               .append("\",oauth_token=\"").append(
> >                                               token.getToken()).append(
> >                                               "\",
> oauth_signature=\"").append(
> >                                               signature).append(
> >                                               "\",
> oauth_version=\"").append(oauth_version).append(
> >                                               "\"").toString();
> >
> >
> >
> >
> >
> > one more question here
> > when i am making the http request do i need to write the post body to
> > the outputStream..
> >
> > and tell me what should i change in the above code...
> >
> > On Aug 18, 3:28 pm, Tom van der Woerdt <i...@tvdw.eu> wrote:
> >> Hi,
> >>
> >> That's a lot of code, but I prefer to know what it is doing over the
> >> actual code. So: can you post a request which you make to Twitter, and
> >> can you give the Base String which you use for generating the signature?
> >>
> >> Tom
> >>
> >> On 8/18/10 8:08 AM, LINUXGEEK wrote:
> >>
> >>> private void StatusUpdate() throws CryptoTokenException,
> >>>                    CryptoUnsupportedOperationException, IOException {
> >>
> >>>            String oauth_signature_method = "HMAC-SHA1";
> >>>            String oauth_timestamp = String.valueOf(timestamp());
> >>>            String oauth_nonce = createNonce(oauth_timestamp);
> >>>            String oauth_version = "1.0";
> >>
> >>>            String postBody = "status="
> >>>                            + URLUTF8Encoder.encode("Finally i got
> success");
> >>
> >>>            String baseString = "POST&"
> >>>                            + URLUTF8Encoder
> >>>                                            .encode("
> https://api.twitter.com/1/statuses/update.json";)
> >>>                            + "&oauth_consumer_key%3D" + "my consumer
> key"
> >>>                            + "%26oauth_nonce%3D" + oauth_nonce
> >>>                            + "%26oauth_signature_method%3D" +
> oauth_signature_method
> >>>                            + "%26oauth_token%3D" + token.getToken()
> >>>                            + "%26oauth_timestamp%3D" + oauth_timestamp
> >>>                            + "%26oauth_version%3D" + oauth_version +
> "%26"
> >>>                            + URLUTF8Encoder.encode(postBody);
> >>>            String signingSecret = URLUTF8Encoder
> >>>                            .encode("my consuer Secret")
> >>>                            + "&" +
> URLUTF8Encoder.encode(token.getSecret());
> >>>            String signature = hmacsha1(signingSecret, baseString);
> >>>            Dialog.alert(signature);
> >>>            String header = new StringBuffer("OAuth
> oauth_nonce=\"").append(
> >>>                            URLUTF8Encoder.encode(oauth_nonce)).append(
> >>>                            "\", oauth_signature_method=\"").append(
> >>>
>  URLUTF8Encoder.encode(oauth_signature_method)).append(
> >>>                            "\", oauth_timestamp=\"").append(
> >>>
>  URLUTF8Encoder.encode(oauth_timestamp)).append(
> >>>                            "\", oauth_consumer_key=\"").append("my
> consumer key")
> >>>                            .append("\",oauth_token=\"").append(
> >>>
>  URLUTF8Encoder.encode(token.getToken())).append(
> >>>                                            "\",
> oauth_signature=\"").append(
> >>>
>  URLUTF8Encoder.encode(signature)).append(
> >>>                                            "\",
> oauth_version=\"").append(oauth_version).append(
> >>>                                            "\"").toString();
> >>>            UpdateMyNewStatus(header, postBody);
> >>>    }
> >>
> >>>    public static void UpdateMyNewStatus(String auth_header, String
> body)
> >>> {
> >>>            String url = "http://api.twitter.com/1/statuses/update.json
> ";
> >>>            HttpConnection httpConn = null;
> >>>            InputStream input = null;
> >>>            OutputStream os = null;
> >>>            try {
> >>
> >>>                    httpConn = (HttpConnection) Connector.open(url
> >>>                                    +
> ConnectionUtils.getConnectionPerameter());
> >>>
>  httpConn.setRequestMethod(HttpProtocolConstants.HTTP_METHOD_POST);
> >>>                    httpConn.setRequestProperty("WWW-Authenticate",
> >>>                                    "OAuth realm=http://twitter.com/";);
> >>>                    httpConn.setRequestProperty("Content-Type",
> >>>
>  "application/x-www-form-urlencoded");
> >>>                    String authHeader = auth_header;
> >>>                    httpConn.setRequestProperty("Authorization",
> authHeader);
> >>
> >>>                    // write post body
> >>>                    String postBody = body;
> >>>                    httpConn.setRequestProperty("Content-Length",
> Integer
> >>>
>  .toString(postBody.getBytes().length));
> >>>                    os = httpConn.openOutputStream();
> >>>                    os.write(postBody.getBytes());
> >>>                    os.close();
> >>>                    os = null;
> >>
> >>>                    input = httpConn.openDataInputStream();
> >>
> >>>                    int resp = httpConn.getResponseCode();
> >>>                    Dialog.alert(httpConn.getResponseMessage());
> >>
> >>>                    if (resp == HttpConnection.HTTP_OK) {
> >>
> >>>                            StringBuffer buffer = new StringBuffer();
> >>>                            int ch;
> >>>                            while ((ch = input.read()) != -1) {
> >>>                                    buffer.append((char) ch);
> >>>                            }
> >>>                            String content = buffer.toString();
> >>>                            Dialog.alert(content);
> >>>                    }
> >>
> >>>            } catch (Exception e) {
> >>>            } finally {
> >>>                    try {
> >>>                            httpConn.close();
> >>>                            input.close();
> >>>                    } catch (IOException e) {
> >>>                            e.printStackTrace();
> >>>                    }
> >>>            }
> >>>    }
> >>
> >>>  i am using the above code..
> >>
> >>> On Aug 17, 7:24 pm, Tom van der Woerdt <i...@tvdw.eu> wrote:
> >>>> On 8/17/10 1:47 PM, LINUXGEEK wrote:
> >>
> >>>>> can any one help in updating the status of my twitter account by
> using
> >>>>> auth token and secret.
> >>
> >>>>> am getting 401 error while doing this..
> >>
> >>>>> can any one give me code for updating the status.
> >>
> >>>> I could give you pseudocode, yes, but that will most likely be useless
> >>>> to you.
> >>
> >>>> Assuming that you know how to program a HTTP socket, what is the
> request
> >>>> you make to twitter before getting this 401 error, and what is the
> base
> >>>> string you use to generate the signature?
> >>
> >>>> Tom
> >>
> >>>> PS: People have said that I never mention the existence of libraries.
> >>>> So, here I go:http://dev.twitter.com/pages/oauth_libraries
> >>>> PPS: I dislike libraries.
>
>


-- 
Ernandes Jr.
---------------------
"ALL programs are poems. However,
NOT all programmers are poets."

Reply via email to