我正在创建一个需要用户登录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);
}
}
答案 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
方法中使用它。
希望有所帮助。
感谢。