确认Twitter应用已在Android上登录

时间:2012-03-01 10:21:27

标签: android android-intent android-twitter

我正在开发的应用程序启动官方Twitter应用程序新帖子屏幕,以便用户可以在意图中添加一些额外文本发布推文。我已经很好地工作了,但是如果用户没有使用Twitter应用程序登录,事情会有点混乱。该应用程序启动但用户必须登录,一旦他们完成了正常的推特屏幕出现,如果他们使用后退按钮返回我的应用程序,新的帖子屏幕实际上显示在回到Twitter提供屏幕后。

在尝试运行意图之前,有什么方法可以检查用户是否实际登录了Twitter应用程序?

4 个答案:

答案 0 :(得分:3)

我认为这是一个Twitter应用内部问题,你无法测试它。

另一方面,你可以通过“不再显示此对话框”复选框向用户提供一个Dialog警告,以便他得到建议,并且可以永远地对话。您甚至可以在此对话框中提供在Twitter应用程序中进行身份验证的说明。

答案 1 :(得分:3)

我正在使用twitter4j lib。 在这里,我检查用户名。如果用户名为null,则表示没有用户登录,否则我会收到用户名。此用户名在我以共享首选项存储的访问令牌中可用。

username = mySession.getUsername();

用户名=(username.equals(“”))? “未登录”:用户名;

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;
    }
}

希望这会对你有所帮助。

答案 2 :(得分:0)

尝试此功能,然后返回true或false。

True :已登录 错误:未登录

twitter.getAuthorization()函数如果没有通过处理它登录就会抛出错误,你可以找到用户以前是否登录过。

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;
      }
}

答案 3 :(得分:0)

只需在ur活动

中的oncreate()中添加这些行
final Session activeSession = Twitter.getInstance().core.getSessionManager().getActiveSession();

if (activeSession != null){
           //do someting
        }