我们有一个应用程序,它支持使用有效的电子邮件 ID 以及使用 Twitter 进行正常登录。我们正在使用我们的应用程序支持发布推文。
在发布推文之前,我正在检查 Twitter 会话。如果没有活动会话,我将通过调用 TwitterAuthClient.authorize() 方法将用户导航到 Twitter 登录屏幕。在授权用户能够看到推文编辑框后,用户可以在其中撰写和发布推文。流程在大多数情况下都能正常工作。但有时 Twitter SDK 会打开 Twitter 主屏幕https://drive.google.com/file/d/0Bz670htOa0h6X1NPajNLSS1YVzNvN2F1VWh2WEhzR0N0YTc0/view?usp=sharing 而不是https://drive.google.com/file/d/0Bz670htOa0h6U0xLT0hxcUUyYVUtVUtVXVfV1RTSTNEWFo/3 view?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) {
}
});
}