package twitter4j.auth; import twitter4j.TwitterException; /** * @author Yusuke Yamamoto - yusuke at mac.com * @since Twitter4J 2.1.0 */ public interface OAuthSupport { /** * Returns an access token associated with this instance.<br> * If no access token is associated with this instance, this will retrieve a * new access token. * * @return access token * @throws TwitterException when Twitter service or network is unavailable, * or the user has not authorized * @throws IllegalStateException when RequestToken has never been acquired * @see <a href="https://dev.twitter.com/docs/auth/oauth/faq">OAuth FAQ | * dev.twitter.com - How long does an access token last?</a> * @see <a href="http://oauth.net/core/1.0a/#auth_step2">OAuth Core 1.0a - * 6.2. Obtaining User Authorization</a> * @see <a * href="https://dev.twitter.com/docs/api/1.1/post/oauth/access_token">POST * oauth/access_token | Twitter Developers</a> * @since Twitter4J 2.0.0 */ AccessToken getOAuthAccessToken() throws TwitterException; /** * Retrieves an access token associated with the supplied request token and * sets userId. * * @param requestToken the request token * @return access token associated with the supplied request token. * @throws TwitterException when Twitter service or network is unavailable, * or the user has not authorized * @see <a href="https://dev.twitter.com/docs/auth/oauth/faq">OAuth FAQ | * dev.twitter.com - How long does an access token last?</a> * @see <a href="http://oauth.net/core/1.0a/#auth_step2">OAuth Core 1.0a - * 6.2. Obtaining User Authorization</a> * @see <a * href="https://dev.twitter.com/docs/api/1.1/post/oauth/access_token">POST * oauth/access_token | Twitter Developers</a> * @since Twitter4J 2.0.0 */ AccessToken getOAuthAccessToken(RequestToken requestToken) throws TwitterException; /** * Retrieves an access token associated with the supplied request token and * sets userId. * * @param requestToken the request token * @param oauthVerifier OAuth verifier. AKA pin. * @return access token associated with the supplied request token. * @throws TwitterException when Twitter service or network is unavailable, * or the user has not authorized * @see <a href="http://oauth.net/core/1.0a/#auth_step2">OAuth Core 1.0a - * 6.2. Obtaining User Authorization</a> * @see <a * href="https://dev.twitter.com/docs/api/1.1/post/oauth/access_token">POST * oauth/access_token | Twitter Developers</a> * @since Twitter 2.1.1 */ AccessToken getOAuthAccessToken(RequestToken requestToken, String oauthVerifier) throws TwitterException; /** * Retrieves an access token. * * @param oauthVerifier OAuth verifier. AKA pin. * @return access token * @throws TwitterException when Twitter service or network is unavailable, * or the user has not authorized * @see <a href="https://dev.twitter.com/docs/auth/oauth/faq">OAuth FAQ | * dev.twitter.com - How long does an access token last?</a> * @see <a href="http://oauth.net/core/1.0a/#auth_step2">OAuth Core 1.0a - * 6.2. Obtaining User Authorization</a> * @see <a * href="https://dev.twitter.com/docs/api/1.1/post/oauth/access_token">POST * oauth/access_token | Twitter Developers</a> * @since Twitter4J 2.0.0 */ AccessToken getOAuthAccessToken(String oauthVerifier) throws TwitterException; /** * Retrieves an access token associated with the supplied screen name and * password using xAuth.<br> * In order to get access acquire AccessToken using xAuth, you must apply by * sending an email to api@twitter.com — all other applications will receive * an HTTP 401 error. Web-based applications will not be granted access, * except on a temporary basis for when they are converting from * basic-authentication support to full OAuth support.<br> * Storage of Twitter usernames and passwords is forbidden. By using xAuth, * you are required to store only access tokens and access token secrets. If * the access token expires or is expunged by a user, you must ask for their * login and password again before exchanging the credentials for an access * token. * * @param screenName the screen name * @param password the password * @return access token associated with the supplied request token. * @throws TwitterException when Twitter service or network is unavailable, * or the user has not authorized * @see <a href="https://dev.twitter.com/docs/auth/oauth/faq">OAuth FAQ | * dev.twitter.com - How long does an access token last?</a> * @see <a href="https://dev.twitter.com/docs/oauth/xauth">xAuth | Twitter * Developers</a> * @see <a * href="https://dev.twitter.com/docs/api/1.1/post/oauth/access_token">POST * oauth/access_token | Twitter Developers</a> * @since Twitter 2.1.1 */ AccessToken getOAuthAccessToken(String screenName, String password) throws TwitterException; /** * Retrieves a request token * * @return generated request token. * @throws TwitterException when Twitter service or network is unavailable * @throws IllegalStateException access token is already available * @see <a href="https://dev.twitter.com/docs/auth/oauth/faq">OAuth FAQ | * Twitter Developers</a> * @see <a href="http://oauth.net/core/1.0a/#auth_step1">OAuth Core 1.0a - * 6.1. Obtaining an Unauthorized Request Token</a> * @see <a * href="https://dev.twitter.com/docs/api/1.1/post/oauth/request_token">POST * oauth/request_token | Twitter Developers</a> * @since Twitter4J 2.0.0 */ RequestToken getOAuthRequestToken() throws TwitterException; /** * Retrieves a request token * * @param callbackURL callback URL * @return generated request token * @throws TwitterException when Twitter service or network is unavailable * @throws IllegalStateException access token is already available * @see <a href="https://dev.twitter.com/docs/auth/oauth/faq">OAuth FAQ | * Twitter Developers</a> * @see <a href="http://oauth.net/core/1.0a/#auth_step1">OAuth Core 1.0a - * 6.1. Obtaining an Unauthorized Request Token</a> * @see <a * href="https://dev.twitter.com/docs/api/1.1/post/oauth/request_token">POST * oauth/request_token | Twitter Developers</a> * @since Twitter4J 2.0.0 */ RequestToken getOAuthRequestToken(String callbackURL) throws TwitterException; /** * Retrieves a request token * * @param callbackURL callback URL * @param xAuthAccessType Overrides the access level an application requests * to a users account. Supported values are read or write. This * parameter is intended to allow a developer to register a * read/write application but also request read only access when * appropriate. * @return generated request token * @throws TwitterException when Twitter service or network is unavailable * @throws IllegalStateException access token is already available * @see <a href="https://dev.twitter.com/docs/auth/oauth/faq">OAuth FAQ | * Twitter Developers</a> * @see <a href="http://oauth.net/core/1.0a/#auth_step1">OAuth Core 1.0a - * 6.1. Obtaining an Unauthorized Request Token</a> * @see <a * href="https://dev.twitter.com/docs/api/1.1/post/oauth/request_token">POST * oauth/request_token | Twitter Developers</a> * @since Twitter4J 2.2.3 */ RequestToken getOAuthRequestToken(String callbackURL, String xAuthAccessType) throws TwitterException; /** * Sets the access token * * @param accessToken accessToken * @since Twitter4J 2.0.0 */ void setOAuthAccessToken(AccessToken accessToken); /** * sets the OAuth consumer key and consumer secret * * @param consumerKey OAuth consumer key * @param consumerSecret OAuth consumer secret * @throws IllegalStateException when OAuth consumer has already been set, * or the instance is using basic authorization * @since Twitter 2.0.0 */ void setOAuthConsumer(String consumerKey, String consumerSecret); }