Метод успешного вызова не вызывается после успешного входа в Twitter Kit для Android
Я пытаюсь создать свой собственный клиент Twitter для Android, и мне ранее удавалось использовать Twitter Kit для входа и получения Home Timeline, но после реализации функции выхода вход в систему больше не работает. Я удалил все, что связано с выходом из системы, и оставил все как прежде и все еще не работает. Я обнаружил, что, хотя вход в систему успешен, но метод успеха никогда не вызывается.
Вот мой код и журналы:
Основная деятельность
public class MainActivity extends AppCompatActivity {
TwitterLoginButton loginButton;
String token;
String secret;
TwitterAuthToken authToken;
Long userId;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Pass the activity result to the login button
loginButton.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TwitterConfig config = new TwitterConfig.Builder(this)
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(new TwitterAuthConfig(CONSUMER_KEY, CONSUMER_SECRET))
.debug(true)
.build();
Twitter.initialize(config);
setContentView(R.layout.activity_main);
final SharedPreferences loginPrefs = getPreferences(MODE_PRIVATE);
prefLogin();
loginButton = findViewById(R.id.login_button);
loginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
// If the login goes well
TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
authToken = session.getAuthToken();
token = authToken.token;
secret = authToken.secret;
userId = session.getUserId();
String username = result.data.getUserName();
loginPrefs.edit().putString("token", token).apply();
loginPrefs.edit().putString("secret", secret).apply();
loginPrefs.edit().putLong("userid", userId).apply();
loginPrefs.edit().putString("username", username).apply();
login(username);
}
private void login(String username) {
Intent intent = new Intent(getApplicationContext(), Timeline.class);
intent.putExtra("username", username);
startActivity(intent);
}
@Override
public void failure(TwitterException exception) {
// if the login fails
Toast.makeText(MainActivity.this, "Login failed", Toast.LENGTH_SHORT).show();
}
});
}
private void prefLogin() {
SharedPreferences loginPrefs = getPreferences(MODE_PRIVATE);
String preftoken = loginPrefs.getString("token", null);
String prefsecret = loginPrefs.getString("secret", null);
Long prefuserId = loginPrefs.getLong("userid", 0);
String prefusername = loginPrefs.getString("username", null);
if (!(preftoken == null) && !(prefsecret == null) && !(prefuserId == 0) && !(prefusername == null)) {
TwitterAuthToken twitterAuthToken = new TwitterAuthToken(preftoken, prefsecret);
TwitterSession twitterSession = new TwitterSession(twitterAuthToken, prefuserId, prefusername);
SessionManager sessionManager = TwitterCore.getInstance().getSessionManager();
sessionManager.setActiveSession(twitterSession);
Intent intent = new Intent(getApplicationContext(), Timeline.class);
startActivity(intent);
}
}
@Override
protected void onPause() {
super.onPause();
finish();
}
}
бревна
11-27 09:58:04.898 2770-2770/com.dinud11.dinudtwitter D/Twitter: Using OAuth
11-27 09:58:05.421 2770-2770/com.dinud11.dinudtwitter D/Twitter: Obtaining
request token to start the sign in flow
11-27 09:58:05.886 2770-2770/com.dinud11.dinudtwitter D/Twitter: Redirecting
user to web view to complete authorization flow
11-27 09:58:08.599 2770-2770/com.dinud11.dinudtwitter D/Twitter: OAuth web
view completed successfully
11-27 09:58:08.599 2770-2770/com.dinud11.dinudtwitter D/Twitter: Converting
the request token to an access token.
И я пробовал на нескольких устройствах. Эти журналы от ВМ.
Заранее спасибо!