自制app使用Twitter API
1.1 准备工作
A.注册Twitter用户
B. 下载库文件http://dev.twitter.com/pages/libraries
本实例使用ActionScript 库文件 TwitterScript http://code.google.com/p/twitterscript/
C. Twitter官方文档 http://dev.twitter.com/doc TwitterScript并无说明文档,Twitter官方的文档和TwitterScript的代码不一致,但不矛盾。
1.2 需求说明
制作AIR程序(图1),实现如下功能
a. 显示当前用户头像,用户名
b. 显示当前用户following followers
c. 显示当前用户friends Tweet public Tweet
d. 提交新Tweet,并体现到friends Tweet中
图1 程序界面
1.3编写代码
Twitter数据调用多数需要身份验证,有的是不需要的。
Twitter的身份验证简单,只需将用户名和密码编码后嵌入到实际调用数据的request的requestHeaders中即可(暂不考虑OAuth),不同于facebook须登录后得到session-key才能调用数据。
TwitterScript 中的方法:
类Twitter.as中function setAuthenticationCredentials(“username”,”password”)
此方法只是将用户的名和密码编码,function twitterRequest()负责将编码嵌入到requestHeaders,该嵌入过程被整合到各个具体调用数据的方法中因此编写程序代码时不用考虑此过程
A.制作登录页面,通过TextInput将用户名密码传给程序。(图2)
图2
提示:两个state ,登录界面和程序界面两个界面大小可以不同:代码如
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="800" height="500"
currentState="sign_out" width.sign_out="320" height.sign_out="230"
width.sign_in="628" height.sign_in="500">
Sign in按钮click=“sign_in( )”
B. 定义sign_in方法,调用数据
var twitter:Twitter = new Twitter()
twitte.setAuthenticationCredentials(usrId.text, passwd.text)
对用户名 密码编码, userId 和 passwd是登录页面两个输入框的ID
twitter.loadInfo(userId.text)
twitter.addEventListener(TwitterEvent.ON_SHOW_INFO, onloadInfo)
调用user信息
twitter.loadFriends(usrId.text)
twitter.addEventListener(TwitterEvent.ON_FRIENDS_RESULT, onloadfriends)
调用user following
twitter.loadFriendsTimeline(userID.text)
twitter.addEventListener(TwitterEvent.ON_FRIENDS_TIMELINE_RESULT, onloadUserTimeLine)
调用friends Tweet
twitter.addEventListener(TwitterEvent.ON_ERROR, onerror)
监听error
C. 处理返回结果。制作程序界面(如图3)
图3
a.显示用户名 头像
loadInfo方法返回的data类型为TwitterUser,包含name ,square url等,处理方法略
b.显示following用户名
loadFriends方法返回TwitterUser的Array
var tmp:Array = event.data as Array
for (var i:int; i<tmp.length; i++){
var user:TwitterUser = tmp[i];
followname.addItem({flwname:user.name})
followname:ArrayCollection 绑定为显示following 的List的数据源,List标签中建itemrenderer 代码如
<fx:Script>
<![CDATA[
[Bindable]
public var displayname:String;
override public function set data(value:Object):void{
displayname = new String(value.flwname)
}
]]>
</fx:Script>
<s:VGroup>
<s:Label text="{displayname}"/>
</s:VGroup>
提示:也可显示头像、创建时间、时区等等
c.显示user ‘s friends Tweet public Tweet
loadFriendsTimeline方法返回Tweet的Array包含text 和发布者信息等
var tmp:Array = event.data as Array;
for(var i:int;i<event.data.length;i++){ tweetArray.addItem(tmp[i])}
tweetArray:ArrayCollection绑定为显示tweet的DataGrid的数据源,DataGrid代码
<mx:DataGrid x="10" y="87" width="607" height="327" dataProvider="{tweetArray}">
<mx:columns>
<mx:DataGridColumn headerText="Tweet" dataField="text"/>
<mx:DataGridColumn headerText="Tweeter" dataField="user.name" width="100"/>
</mx:columns>
</mx:DataGrid>
d. 提交新Tweet。添加输入框和提交按钮,按钮事件sendTweet()
public function sendTweet():void{
var Tweet:String = tweet.text
将输入内容赋值给变量Tweet
twitter.setStatus(Tweet);
提交Tweet
twitter.addEventListener(TwitterEvent.ON_SET_STATUS, onsetstatus)
监听是否成功
tweet.text = “”} 将输入框中文本清除
提交成功后onsetstatus方法刷新一下DataGrid的数据 定义刷新方法
function freshTweet()本例将loadFriendsTimeline方法提出另定义为LoadFriendsTimeLine方法,function freshTweet()执行LoadFriendsTimeLine方法。
e. 添加刷新按钮 添加button 定义skinClass=“com.skin.freshButton”按钮图存同一路径 freshButton 代码
<s:states>
<s:State name="disabled" />
<s:State name="down" />
<s:State name="over" />
<s:State name="up" />
</s:states>
<s:BitmapImage source="@Embed('arrow_refresh.png')"/>
按钮 buttonmode=“true”click=“freshTweet()”
f. 添加Alert.Show 。之前监听Error的响应方法 编写代码
var alert:Alert = Alert.show(“something was wrong,click button for try again”)
登录页面 检验是否输入用户名密码
if(userId.text==”"||passwd.text==”"){ Alert.show(“please enter your username and password!”)}
2 Twitter官网工具
API Status 查看各API状态
http://dev.twitter.com/status
API Console Web Console
http://dev.twitter.com/start