# OAuth Client Sample - Twitter Client

This example demonstrates how to develop a simple web app client utilizing Jersey client API and Jersey OAuth support.

## Contents

This example consists of the main class (`App`) and two JAXB beans used for unmarshaling the responses from Twitter (`Status` and `User`).

## Running the Example

### Registering with Twitter

Before running the example, you have to register your own application with Twitter (to obtain consumer key and consumer secret you have to use to configure this client). You can do it as follows:

1. Go to Twitter Developers Page, sign in with your Twitter account and click Create an app link. If you are new to Twitter, you will need to Sign up.
2. Fill out the "Create an application" form - you have to pick a unique application name (e.g. app12345678), put in some description, put in something for app website (e.g. http://jersey.java.net), Accept terms by selecting Yes, I agree in "Twitter Content" checkbox, enter captcha.
3. Click Create your twitter application button.
4. You will be presented with consumer key, consumer secret and other details for your registered application.

### Running for the First Time

Enter the following on the command-line:

            mvn clean compile exec:java -DforkMode=never -DconsumerKey=<consumer key assigned to your app> -DconsumerSecret=<consumer secret assigned to your app>

### Subsequent Runs

After you run the application for the first time, it stores the consumer key, secret and token and token secret in a property file for future use. So, for subsequent runs you don't have to specify these as system properties. The following command is good enough for running the application after it was built, run for the first time and the property file was created:

            mvn exec:java

## Troubleshooting

### HTTP Proxy

Behind a HTTP proxy, you will need to setup the following system properties to communicate with the Twitter server:

- http.proxyHost - the name of the proxy host.
- http.proxyPort - the port of the proxy host.
- http.proxyAuth - the user name and password to use when connecting to the proxy; this string should be the user name and password separated by a colon (e.g., rickhall:mypassword).

These system properties can be set directly on the command line when starting the JVM using the standard "-D<prop>=<value>" syntax.