1

我在Android开发方面没有太多经验。我正在开发可以与 Facebook、Twitter、LinkedIn 和 Google+ 通信的应用程序。

每个社交网络都有自己的包装器,用于处理 Android 应用程序和社交网络之间的通信。Facebook 通信已经完成。我在 Twitter 通信方面遇到问题。我在互联网上找到的实现使用 twitter4j 库和互联网浏览器进行日志记录。然后您必须从浏览器读取响应数据。

例如:Twitter 测试应用

我的问题是从浏览器读取此响应数据。在浏览器中登录和授权没有问题。我上面提到的教程通常使用 onNewIntent() Activity 方法来处理浏览器响应。但我不能使用这种方法,因为它用于不同的目的。我不知道是否可以在没有除 MainActivity 之外的任何其他 Activity 的情况下执行此操作,或者我需要在包装器中创建另一个 Activity 来处理整个 Twitter 通信。

谢谢你的帮助。

4

1 回答 1

2

我真的不知道为什么互联网上有这么多 twitter4j 的示例通过意图和自定义方案来处理回调 URL。在大多数情况下,我觉得这很尴尬。我也不喜欢离开应用程序去浏览器登录。

相反,请尝试使用 aWebView来加载页面。然后你可以附加一个WebViewClient可以检测回调 URL 的。您也不必处理更改清单等。你可能会做这样的事情,也许在onCreateView里面DialogFragment

mWebView = new WebView(context);
mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onLoadResource(WebView view, String url) {
        if (url.startsWith(CALLBACK_URL)) {
            Uri uri = Uri.parse(url);
            String denied = uri.getQueryParameter("denied");
            if (denied != null) {
                // handle denied
            } else {
                // handle authenticated
            }
        }
        super.onLoadResource(view, url);
    }
});

然后您可以加载身份验证 URL onViewCreated(如果您在 a 中执行此操作DialogFragment):

    Twitter twitter = new TwitterFactory().getInstance();
    twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
    RequestToken reqToken = twitter.getOAuthRequestToken();
    mWebView.loadUrl(reqToken.getAuthenticationURL());
于 2013-03-19T22:34:31.080 回答