1

我们有一个应用程序,它支持使用有效的电子邮件 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) {
    }
});

}

4

0 回答 0