Twitter4J创建回到我的应用程序的回调URL

时间:2015-05-28 22:43:15

标签: java android twitter callback twitter4j

我已经读过这篇文章:Android: Login with Twitter using Twitter4J

选择的答案在我需要的背景下没有意义。

我希望用户能够从我们的应用程序登录他们的Twitter帐户,然后,一旦他们登录,我希望我们的应用程序重新加载。

它加载推特网页(虽然我希望他们只能在我的应用程序中登录而不需要浏览器)但是我不知道如何设置我的应用程序'作为回调。

你能告诉我在哪里找到(或设置它是否存在)回调网址,这样当用户登录Twitter时我们的应用程序会重新打开吗?

这是我的登录代码:

    public void loginUser()
    {
        //Check if already logged in
        if (!isTwitterLoggedInAlready()) {
            ConfigurationBuilder builder = new ConfigurationBuilder();
            builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
            builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
            Configuration configuration = builder.build();

            TwitterFactory factory = new TwitterFactory(configuration);
            twitter = factory.getInstance();

            try {
//What do I set my TWITTER_CALLBACK_URL as?
                requestToken = twitter.getOAuthRequestToken(TWITTER_CALLBACK_URL);
                this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(requestToken.getAuthenticationURL())));
            } catch (TwitterException e) {
                e.printStackTrace();
            }
       } else {            
       // user already logged into twitter
           Toast.makeText(getApplicationContext(),
                   "Already Logged into twitter", Toast.LENGTH_LONG).show();
        }
    }

1 个答案:

答案 0 :(得分:1)

我无法弄清楚清单中的意图是如何运作的。

相反,我做了以下(并且有效)

  1. 创建一个WebViewClient并覆盖其shouldOverrideUrlLoading

  2. 将此WebViewClient设置为webview并从那里加载twitter登录。

  3. 在我的WebView客户端中,我正在解析twitter响应,查找我的字符串(可以是任何内容)。如果它在那里,我隐藏了webview。

    @Override
    public boolean shouldOverrideUrlLoading (WebView view, String url) {
        Log.d("Loading webview", url);
        if (url.contains(TwitterActivity.CALLBACK_URL)) {
            Uri uri = Uri.parse(url);
            String oauthVerifier = uri.getQueryParameter("oauth_verifier");
            _twitterActivty.closeTwitterBrowser(oauthVerifier);
            return false;
        }
        view.loadUrl(url);
        return true;
    }