2012-03-01 57 views
7

Ứng dụng của tôi Tôi đang phát triển ra mắt ứng dụng twitter chính thức của màn hình bài đăng mới để người dùng có thể đăng một tweet với một số văn bản bổ sung được thêm vào mục đích. Tôi đã nhận được điều này làm việc độc đáo tuy nhiên mọi thứ có được một chút nhầm lẫn nếu người dùng không đăng nhập với các ứng dụng twitter. Ứng dụng khởi chạy nhưng người dùng phải đăng nhập, khi họ đã thực hiện màn hình twitter bình thường, nếu họ sử dụng nút quay lại để quay lại ứng dụng của tôi, màn hình bài đăng mới thực sự xuất hiện sau khi nhấn lại trên màn hình nguồn cấp dữ liệu twitter.Xác minh ứng dụng Twitter được đăng nhập trên Android

Có cách nào tôi có thể kiểm tra xem người dùng có thực sự đăng nhập vào ứng dụng twitter trước khi cố gắng chạy mục đích không?

+2

Tôi tin rằng đó là một lỗi trong ứng dụng Twitter. Màn hình bài đăng mới sẽ xuất hiện sau khi đăng nhập thành công (dựa trên ý định ban đầu đã nhận được). –

Trả lời

0

Hãy thử chức năng này sẽ lần lượt trả về bạn đúng hoặc sai.

Đúng: Logged trong
False: Chưa đăng nhập

twitter.getAuthorization() chức năng sẽ ném bạn một lỗi nếu nó không được đăng nhập bằng cách xử lý này, bạn có thể tìm thấy cho dù trước đó người dùng được đăng nhập hay không .

public static boolean isAuthenticated(SharedPreferences prefs) { 

     String token = prefs.getString(OAuth.OAUTH_TOKEN, ""); 
     String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, ""); 

     AccessToken a = new AccessToken(token,secret); 
     Twitter twitter = new TwitterFactory().getInstance(); 
     twitter.setOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); 


     try { 
     twitter.getAuthorization(); 
     return true; 
     } catch (Exception e) { 
     return false; 
     } 
} 
+0

Câu hỏi nêu rõ nó sẽ mở ứng dụng chính thức. Nó không sử dụng api twitter. – Phil

3

Tôi nghĩ rằng đó là vấn đề nội bộ của ứng dụng Twitter và bạn không thể thử nghiệm nó.

Mặt khác, bạn có thể cung cấp Hộp thoại cảnh báo người dùng về vấn đề này với hộp kiểm "Không hiển thị hộp thoại này nữa" để được thông báo và có thể làm mờ Hộp thoại. Bạn thậm chí có thể cung cấp hướng dẫn để xác thực bên trong ứng dụng Twitter trong Hộp thoại này.

3

Tôi đang sử dụng twitter4j lib. Ở đây tôi kiểm tra tên người dùng. Nếu tên người dùng là null thì không có người dùng đăng nhập, nếu không tôi sẽ nhận được tên người dùng. Tên người dùng này có sẵn trong mã thông báo truy cập mà tôi lưu trữ trong tùy chọn được chia sẻ.

tên người dùng = mySession.getUsername();

tên người dùng = (username.equals (""))? "Không đăng nhập": tên người dùng;

mã cho mySession: -

public class MySession { 
    private SharedPreferences sharedPref; 
    private Editor editor; 

    private static final String TWEET_AUTH_KEY = "auth_key"; 
    private static final String TWEET_AUTH_SECRET_KEY = "auth_secret_key"; 
    private static final String TWEET_USER_NAME = "user_name"; 
    private static final String SHARED = "Twitter_Preferences"; 

    public TwitterSession(Context context) { 
     sharedPref = context.getSharedPreferences(SHARED, Context.MODE_PRIVATE); 
     editor = sharedPref.edit(); 
    } 

    public void storeAccessToken(AccessToken accessToken, String username) { 
     editor.putString(TWEET_AUTH_KEY, accessToken.getToken()); 
     editor.putString(TWEET_AUTH_SECRET_KEY, accessToken.getTokenSecret()); 
     editor.putString(TWEET_USER_NAME, username); 
     editor.commit(); 
    } 

    public void resetAccessToken() { 
     editor.putString(TWEET_AUTH_KEY, null); 
     editor.putString(TWEET_AUTH_SECRET_KEY, null); 
     editor.putString(TWEET_USER_NAME, null); 

     editor.commit(); 
    } 

    public String getUsername() { 
     return sharedPref.getString(TWEET_USER_NAME, ""); 
    } 

    public AccessToken getAccessToken() { 
     String token = sharedPref.getString(TWEET_AUTH_KEY, null); 
     String tokenSecret = sharedPref.getString(TWEET_AUTH_SECRET_KEY, null); 

     if (token != null && tokenSecret != null) 
      return new AccessToken(token, tokenSecret); 
     else 
      return null; 
    } 
} 

Hy vọng điều này sẽ giúp bạn.

0

chỉ cần thêm những dòng này trong onCreate() trong hoạt động ur

final Session activeSession = Twitter.getInstance().core.getSessionManager().getActiveSession(); 

if (activeSession != null){ 
      //do someting 
     } 
Các vấn đề liên quan