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