逐步补全!
决定使用twitter4j来完成。
完成过程:
step1: 从http://abhinavasblog.blogspot.com/2011/06/for-all-my-code-thirsty-friends-twitter.html?spref=fb
check out 出代码:
设置:
/** Called when the activity is first created. */
privatestaticfinal StringCONSUMER_KEY ="XXXXXXXXXXXXXXX";//
privatestaticfinal StringCONSUMER_SECRET ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
修改manifest.xml
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
<activityandroid:name=".TwitterForUActivity"android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<actionandroid:name="android.intent.action.VIEW"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<categoryandroid:name="android.intent.category.BROWSABLE"/>
<dataandroid:scheme="twitterapp"android:host="connect"/>
</intent-filter>
</activity>
</application>
<uses-permissionandroid:name="android.permission.INTERNET"/>
// 红色部分为添加
在真机上测试运行,结果显示:
03-05 15:04:20.962: W/System.err(1508): oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: https://api.twitter.com/oauth/request_token
03-05 15:04:20.962: W/System.err(1508): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:214)
03-05 15:04:20.962: W/System.err(1508): at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)
03-05 15:04:20.972: W/System.err(1508): at com.twitter.android.TwitterApp$2.run(TwitterApp.java:130)
03-05 15:04:20.972: W/System.err(1508): Caused by: java.io.FileNotFoundException: https://api.twitter.com/oauth/request_token
03-05 15:04:20.972: W/System.err(1508): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:521)
03-05 15:04:20.972: W/System.err(1508): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:258)
03-05 15:04:20.972: W/System.err(1508): at oauth.signpost.basic.HttpURLConnectionResponseAdapter.getContent(HttpURLConnectionResponseAdapter.java:18)
03-05 15:04:20.972: W/System.err(1508): at oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:228)
03-05 15:04:20.972: W/System.err(1508): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189)
03-05 15:04:20.972: W/System.err(1508): ... 2 more
03-05 15:04:20.992: E/TWITTER(1508): Error getting request token
然后查阅资料:
http://java.dzone.com/articles/learning-android
还是解决不了,不知道应该如何是好。
换一种思路:
http://android10.org/index.php/articleslibraries/291-twitter-integration-in-your-android-application
按照这个上面的指导一步一步来做,试试运气吧! 还是不行。
后来才知道是网络出了问题,公司的wifi有问题!上的异常,也是由于网络问题所引起的,在开发 ”分享信息到twitter上“,这个功能时,一定要保证你的手机能够连接VPN上得twitter,facebook这些外网。
还是使用原来的步骤来做,就成功了。
特别注意: 在twitter上面创建自己的应用 时,一定要记得设置 CALLBACK_URL 这个项目,不能为空。对于ANDROID 来说这个设置一定不能为空。你可以随便设置一个网址,反正在程序里面我们已经做了CALLBACK处理。所以设置什么内容是无关的。或者出现下面的异常,也是因为网络原因:
03-07 11:24:58.247: W/System.err(2261): oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: api.twitter.com
03-07 11:24:58.247: W/System.err(2261): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:214)
03-07 11:24:58.247: W/System.err(2261): at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)
03-07 11:24:58.247: W/System.err(2261): at com.twitter.android.TwitterApp$2.run(TwitterApp.java:131)
03-07 11:24:58.257: W/System.err(2261): Caused by: java.net.UnknownHostException: api.twitter.com
03-07 11:24:58.257: W/System.err(2261): at java.net.InetAddress.lookupHostByName(InetAddress.java:497)
03-07 11:24:58.257: W/System.err(2261): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
03-07 11:24:58.257: W/System.err(2261): at java.net.InetAddress.getAllByName(InetAddress.java:256)
03-07 11:24:58.257: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:69)
03-07 11:24:58.267: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
03-07 11:24:58.267: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:322)
03-07 11:24:58.267: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
03-07 11:24:58.267: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:285)
03-07 11:24:58.267: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:267)
03-07 11:24:58.277: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:406)
03-07 11:24:58.277: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeConnection(HttpsURLConnectionImpl.java:387)
03-07 11:24:58.277: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:205)
03-07 11:24:58.277: W/System.err(2261): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:152)
03-07 11:24:58.277: W/System.err(2261): at oauth.signpost.basic.DefaultOAuthProvider.sendRequest(DefaultOAuthProvider.java:48)
03-07 11:24:58.277: W/System.err(2261): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:177)
03-07 11:24:58.277: W/System.err(2261): ... 2 more
03-07 11:24:58.297: E/TWITTER(2261): Error getting request token
参考资料:
http://twitter4j.org/en/index.html
http://stackoverflow.com/questions/4571352/is-there-any-twitter-api-sdk-for-android
http://stackoverflow.com/questions/5937600/how-to-check-callback-url-in-twitter-application