# OAuth 1 Client Sample - Twitter Client

This example demonstrates how to develop a simple web app client utilizing JAX-RS 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. You need to sign in to the Twitter (if you are new to Twitter you need to sign up). Then in the right upper corner you will see your profile photo and drop down list in which you select "My Application". Click on Create a new application button.
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 -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.