앱개발에 있는 위푸님 방법을 보고 따라 해 봤습니다.
소스 그대로 넣어주고 consumer, consumerSeceret키만 넣어서 돌렸는데요,
앱이 실행되고 로긴 화면 까지 나오는데요, 여기서 이메일, 패스워드 넣고 Allow 를 선택하면
connection allowed화면이 잠깐 나왔다가 다시 같은 앱이 재 실행이 됩니다.
사이트에서 확인하면 역시 allowed는 안돼 있고요, 왜 계속 실행이 되는지 모르겠습니다.
twitter인증에서 web방식으로 인증하는건 php나 jsp페이지를 만들어서 구현을 해야하는 것인가요?
한가지 더, 트위터에 등록할때 등록한 callbackurl하고 소스에 CALLBACK_URL하고 무관한건 가요?
등록할때 임의로 입력한 callbackurl을 소스에 넣으면 앱 재실행이 아니라
페이지를 열 수 없다고 나옵니다.
작성한 코드입니다.(코드편집기를 모르겠어서 붙여넣습니다.)
--------------------------------------------------------------------------
package com.yoo.twitterMain;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.http.AccessToken;
import twitter4j.http.RequestToken;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class twitterMain extends Activity
{
/** Called when the activity is first created. */
private static String consumerKey = "등록받은 키 입력했습니다."; // 발급받은 consumerKey
public static String consumerSecret = "등록받은 키 입력했습니다."; // "발급받은consumeSecret";
public static Uri CALLBACK_URL = Uri.parse("wefu://twitter");
private final String TAG = "Exception : ";
private Twitter twitter;
private AccessToken acToken;
private RequestToken rqToken;
private Status status;
public void onCreate(Bundle savedInstanceState)
{
twitter = null;
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
try
{
rqToken = twitter.getOAuthRequestToken(CALLBACK_URL.toString());
}
catch(TwitterException e)
{
}
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(rqToken.getAuthorizationURL())));
}
protected void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
Uri uri = intent.getData();
Toast.makeText(this, uri.getScheme(), Toast.LENGTH_SHORT).show();
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());
}
}
}
}
-------------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yoo.twitterMain" android:versionCode="1"
android:versionName="1.0">
<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>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>