我对Android的开发经验不多。我正在开发应用程序,可以与Facebook,Twitter,LinkedIn和Google+进行通信。
每个社交网络都有自己的包装器,用于处理Android应用和社交网络之间的通信。 Facebook的沟通已经完成。我有Twitter通讯的问题。我在互联网上找到的实施使用twitter4j库和互联网浏览器进行日志记录。然后,您必须从浏览器中读取响应数据。
我的问题是从浏览器中读取此响应数据。在浏览器中记录和授权没有问题。像我上面提到的教程通常使用onNewIntent()Activity方法来处理浏览器响应。但我不能使用这种方法,因为它用于不同的目的。我不知道除了MainActivity之外没有任何其他活动是否可行,或者我需要在包装器中创建另一个Activity,它将处理整个Twitter通信。
感谢您的帮助。
答案 0 :(得分:2)
我真的不确定为什么互联网上的twitter4j这么多例子会通过意图和自定义方案来处理回调网址。我发现大多数情况都很尴尬。我也不喜欢让应用程序去浏览器登录。
相反,请尝试使用WebView
加载页面。然后,您可以附加可以检测回调URL的WebViewClient
。您也不必处理更改清单等问题。您可以在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);
}
});
然后您可以在onViewCreated
中加载身份验证网址(如果您在DialogFragment
中执行此操作):
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
RequestToken reqToken = twitter.getOAuthRequestToken();
mWebView.loadUrl(reqToken.getAuthenticationURL());