트위터에서 Basic인증방식(ID와 Password를 직접입력 받는 방식)을 6월 까지만 지원한다는 소식이 있어서
트위터 어플 만드시는 분들이 oauth인증 방식에 대하여 많이 궁금해 히시는 것 같습니다.
twitter4j를 이용한 oauth인증방법에 대하여 간단하게 공유 하도록 하겠습니다.

-       Web application Oauth인증
Web application의 경우는 requestToken을 요청할 때 등록된 callback Url로 넘어온 인증키(oauth_verifier)을 이용하여서 AccessToken을 발급받은 후 twitter에 인증하는 방식 입니다.

-       Client application Oauth인증
Client application의 경우는 requestToken을 요청할 때 따로 callback url을 등록하지 않고 인증 Url web browser를 실행한 후 app 사용자가 로그인하여 발급 받은 PIN번호를 입력 받아서 AccessToken을 발급받은 후 twitter에 인증하는 방식 입니다.

- oauth인증 방식에 자세한 정보는 아래 링크를 참고하세요
  http://cafe.naver.com/openapi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1595

twitter4j 2.1 이상의 버전부터 Oauth인증 방식을 지원하고 있습니다
twitter4j를 이용하여 Web application oauth인증방식을 구현하는 방법에 대하여 설명하겠습니다.

1. TwitterMain.java

public static String consumerKey = ""; //"발급받은consumerKey ";
public static String consumerSecret = ""; //"발급받은consumeSecret";
public static Uri CALLBACK_URL = Uri.parse("wefu://twitter");
 
private Twitter twitter;
private AccessToken acToken;
private RequestToken rqToken;
private Status status = null;
 
public void onCreate(Bundle savedInstanceState) {
         twitter = new TwitterFactory().getInstance();
         twitter.setOAuthConsumer(consumerKey, consumerSecret);
         rqToken = twitter.getOAuthRequestToken(CALLBACK_URL.toString());
         startActivity(new Intent(Intent.ACTION_VIEW,  Uri.parse(
rqToken.getAuthorizationURL())));
}
 
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if(uri != null && CALLBACK_URL.getScheme().equals(uri.getScheme())){
String oauth_verifier = uri.getQueryParameter("oauth_verifier");
try {
             acToken = twitter.getOAuthAccessToken(rqToken, oauth_verifier);
             status = twitter.updateStatus("test twitter4j web application oauth");
} catch (TwitterException e) {
             Log.e(TAG, e.getMessage());
}
          }}

1.1 RequestToken을 요청할때 callback URL을 지정하여서 요청합니다.
1.2 Browser를 응답받은 RequestToken의 getAuthorizationURL로 지정하여서 실행 합니다.
1.3 onNewIntent에서 callback URL로 리다이렉트 될때 인증 data를 받아서 AccessToken을 요청하여 인증합니다.

2. AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TwitterMain"
     android:label="@string/app_name"
     android:launchMode="singleInstance" >
<intent-filter>            
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter> 
       <action android:name="android.intent.action.VIEW" />
       <category android:name="android.intent.category.DEFAULT" />
       <category android:name="android.intent.category.BROWSABLE" />
       <data android:scheme="wefu" android:host="twitter" />                
 </intent-filter>
</activity></application>

2.1  intent-filter에 data로 callback URL를 지정해 주게 되면 TwitterMain activty가 다시 실행되게 되므로 launchMode를 
     singleInstance로  지정합니다

-  추가로 xauth인증 방식에 대하여 설명한 블로그가 있어 링크합니다
   http://blog.naver.com/pppplqqqq?Redirect=Log&logNo=100105293098

포맷변환_twitter4j_oauth1.jpg  포맷변환_twitter4j_oauth2.jpg
포맷변환_twitter4j_oauth.jpg