내 응용 프로그램에 twitter4j를 사용하고 있습니다. 인증 토큰이 만료되었거나 사용자가 아직twitter.getAccountSettings()에 대한 AsyncTask 구현 방법 : Android
public static boolean isAuthenticated(Context context) {
TwitterPrefrences twitterPref = new TwitterPrefrences(context);
String token = twitterPref.getTwitterAuthToken();
String secret = twitterPref.getTwitterAuthTokenSecrate();
AccessToken a = new AccessToken(token,secret);
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(Constants.TWITT_CONSUMER_KEY, Constants.TWITT_CONSUMER_SECRET);
twitter.setOAuthAccessToken(a);
try {
twitter.getAccountSettings();
return true;
} catch (TwitterException e) {
return false;
}
}
에 로그인하지 않은 경우, 나는 확인 코드 아래 사용하고하지만
05-02 19:52:23.531: E/AndroidRuntime(1441): FATAL EXCEPTION: main
05-02 19:52:23.531: E/AndroidRuntime(1441): android.os.NetworkOnMainThreadException
05-02 19:52:23.531: E/AndroidRuntime(1441): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
05-02 19:52:23.531: E/AndroidRuntime(1441): at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
05-02 19:52:23.531: E/AndroidRuntime(1441): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
05-02 19:52:23.531: E/AndroidRuntime(1441): at java.net.InetAddress.getAllByName(InetAddress.java:220)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
05-02 19:52:23.531: E/AndroidRuntime(1441): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:479)
05-02 19:52:23.531: E/AndroidRuntime(1441): at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:45)
05-02 19:52:23.531: E/AndroidRuntime(1441): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:178)
05-02 19:52:23.531: E/AndroidRuntime(1441): at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:75)
05-02 19:52:23.531: E/AndroidRuntime(1441): at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:103)
05-02 19:52:23.531: E/AndroidRuntime(1441): at
twitter4j.Twitter.getAccountSettings(Twitter.java:1440)
발신자 코드
chbTwOption.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
boolean showTwlogin = false;
if ("No".equalsIgnoreCase(twitPref.getTwitterAuthToken())
|| "No".equalsIgnoreCase(twitPref.getTwitterAuthTokenSecrate())) {
showTwlogin = true;
} else {
showTwlogin = TwitterUtils.isAuthenticated(AddSchedule.this);
}
if(showTwlogin) {
showSocialMediaLoginMessage(Constants.TW_LOGIN_MESSAGE);
}
}
}
});
그 분명 그
으로 오류를 다음 무엇입니까 을twitter.getAccountSettings()
에 구현해야하지만 어떻게 결과를 얻을 수있는 방법은
AsyncTask
입니까? 인증 토큰이 만료되었는지 확인하는 다른 방법이 있습니까? 또는 내가 사용한대로
isAuthenticated()
이라는 결과를 반환하는 방법으로
AsyncTask
을 어떻게 구현할 수 있습니까?
안내해주세요.
감사합니다.
+1 감사합니다! TwitterLoginActivity 코드에서 아이디어를 얻었습니다. 그리고 나는 내 일을했다. :) –