Android: войдите в систему через Twitter/ поделитесь через Twitter. Приложение переходит на домашний экран Twitter вместо экрана входа в систему.
У нас есть приложение, которое поддерживает нормальный вход в систему, используя действующий идентификатор электронной почты, а также используя Twitter. Мы поддерживаем пост твиты с помощью нашего приложения.
Перед публикацией твита я проверяю сессию в Твиттере. Если нет активного сеанса, я перемещаю пользователя на экран входа в Twitter, вызывая метод TwitterAuthClient.authorize(). После авторизации пользователь может видеть окно Tweet Composer, где пользователь может создавать и публиковать твиты. Поток работает правильно большую часть времени. Но иногда Twitter SDK открывает начальный экран Twitter https://drive.google.com/file/d/0Bz670htOa0h6X1NPajNLSS1YVzNvN2F1VWh2WEhzR0N0YTc0/view?usp=sharing вместо https://drive.googleTOFVXVXWx0h0h0h0h0h0R0R0R0R0R0R0R0R0R0R0R0R0R0R0W0R0R0R0R0R0R0R0SB посмотреть? usp = экран обмена. Из-за этого обратный вызов не возвращается в мое приложение после входа в систему. Поэтому я не могу чирикать.
ПРИМЕЧАНИЕ. На моем устройстве установлено приложение Twitter, а активный сеанс Twitter отсутствует.
Код:
private void postViaTwitter() {
if (Twitter.getSessionManager().getActiveSession() != null ||
!(Utils.isAppPresent(AppConstant.TWITTER_PACKAGE_NAME, this))) {
URL url = null;
try {
url = new URL(UrlUtils.APP_URL);
TweetComposer.Builder tweetComposer = new TweetComposer.Builder(this)
.text(getString(R.string.share_content_description))
.url(url);
tweetComposer.show();
} catch (MalformedURLException e) {
Log.e("Exception", e.getMessage(), e);
}
} else {
loginAndShareUsingTwitter();
}
}
private void loginAndShareUsingTwitter() {
TwitterAuthClient client = new TwitterAuthClient();
client.authorize(this, new com.twitter.sdk.android.core.Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
if (result != null) {
TwitterSession session = result.data;
if (session != null) {
postViaTwitter();
}
}
}
@Override
public void failure(TwitterException exception) {
}
});
}