Twitter Fabric保持用户在重新启动手机时登录

时间:2015-10-27 20:32:39

标签: android session twitter login twitter-fabric

我正在创建一个需要用户登录Twitter的Android应用程序。问题是,当我重新启动手机时,用户必须再次登录Twitter :( ...我正在使用Twitter Fabric api ...之前有人遇到过这个问题。任何帮助都将不胜感激

import io.fabric.sdk.android.Fabric;

public class CDOActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {

private static final String TWITTER_KEY = "xxx";
private static final String TWITTER_SECRET = "xxx";
private TwitterLoginButton loginButton;
private static TwitterSession twitterSession;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
    Fabric.with(this, new Twitter(authConfig));
    LoginHandler loginHandler = new LoginHandler();

    if (hasHeaders()) {
        loginButton = new TwitterLoginButton(this);
        loginButton.setCallback(loginHandler);
        setListFooter(loginButton);
    }
}

public class LoginHandler extends Callback<TwitterSession> {
    @Override
    public void success(Result<TwitterSession> result) {
        TwitterSession session = result.data;
        final TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient(session);
        new TweetService(twitterApiClient, getApplicationContext());
        twitterSession = session;
        loginButton.setVisibility(View.GONE);
    }

    @Override
    public void failure(TwitterException e) {
        Log.i("Problem...","An error was logged from {@code LoginHandler}");
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    loginButton.onActivityResult(requestCode, resultCode, data);
    }
}

1 个答案:

答案 0 :(得分:0)

我也有同样的问题。实际上,每当我关闭应用程序时,我都会被注销。

我使用SessionManager来检查应用程序是否有任何活动会话。如果不是,则将其重定向到登录,否则我正在执行下一组操作,即调用if..else条件内的函数。我检了两次。即使我重新启动手机,它也会自动登录(这是您的主要问题)。

示例代码:

TwitterSession twitterSession = TwitterCore.getInstance().getSessionManager().getActiveSession();
        if(twitterSession!=null)
        {
            getTwitterData(twitterSession); //Custom function in which am fetching the user's profile data
            loginButton.setVisibility(View.INVISIBLE);
            Toast.makeText(getApplicationContext(), "Welcome Back", Toast.LENGTH_LONG).show();
        }

onCreate方法中使用它。

希望有所帮助。

感谢。