有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我已经通读了:Android: Login with Twitter using Twitter4J

而选择的答案在我需要的上下文中没有意义

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

它会加载twitter网页(尽管我希望他们可以在我的应用程序中登录,而不需要浏览器),但我不确定如何将“我的应用程序”设置为回调

你能告诉我在哪里可以找到(或设置,如果它不存在)回调URL,这样当用户登录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) 个答案

  1. # 1 楼答案

    我不太明白舱单业务的意图是如何运作的

    相反,我做了以下几件事(而且很管用)

    1. 创建了WebViewClient并覆盖了其shouldOverrideUrlLoading

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

    3. 在我的WebView客户端中,我正在解析twitter响应,寻找我的字符串(可以是任何东西)。如果在那里,我会隐藏网络视图

      @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;
      }