The TwitterOauth example source in the SDk (2011) was broken when Twitter upgraded their API to 1.1 from 1.0.
To stop it from crashing replace the following functions in twitter.brs with the ones posted below. Please note the comments.
Function parse_status_response(json As Object, tweetArray As Object) As Void
tweetCount = 0
for each array in json
array = tweet
end for
for each tweet in json
item = init_tweet_item()
item.Message = tweet.text
item.UserName = tweet.user.screen_name
item.ImageSource = tweet.user.profile_image_url
tweetCount = tweetCount + 1
tweetArray.Push(item)
end for
End Function
Function show_tweet_canvas() As Void
http = NewHttp("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=RokuUser") 'need to replace RokuUser with actual screen name
oa = Oauth()
oa.sign(http,true)
rsp = http.getToStringWithTimeout(10)
json = ParseJson(rsp)
if json=invalid then
print "Can't parse feed"
sleep(25)
return
endif
tweetArray = CreateObject("roArray", 100, true)
m.ParseTweets(json, tweetArray)
canvasArray = CreateObject("roArray", 100, true)
canvasCount = 0
tweetCount% = 0
tweetColumn% = 0
tweetRow% = 0
for each tweet in tweetArray
canvasItem = CreateObject("roAssociativeArray")
canvasItem.url = tweet.ImageSource
targetRect = CreateObject("roAssociativeArray")
targetRect.x = tweetColumn% * 540 + 36
targetRect.y = tweetRow% * 165 + 36 'changed 135 to 165
targetRect.w = 48
targetRect.h = 48
canvasItem.TargetRect = targetRect
canvasCount = canvasCount + 1
canvasArray.Push(canvasItem)
canvasItem = CreateObject("roAssociativeArray")
canvasItem.Text = tweet.UserName
canvasItem.TextAttrs = {Color:"#FFC8AB14", Font:"Medium", HAlign:"HLeft",VAlign:"VCenter", Direction:"LeftToRight"}
targetRect = CreateObject("roAssociativeArray")
targetRect.x = tweetColumn% * 540 + 60 + 36
targetRect.y = tweetRow% * 165 + 36 'changed 135 to 165
targetRect.w = 210
targetRect.h = 45
canvasItem.TargetRect = targetRect
canvasCount = canvasCount + 1
canvasArray.Push(canvasItem)
canvasItem = CreateObject("roAssociativeArray")
canvasItem.Text = tweet.Message
canvasItem.TextAttrs = {Color:"#FFCCCCCC", Font:"Medium", HAlign:"HLeft",VAlign:"VCenter", Direction:"LeftToRight"}
targetRect = CreateObject("roAssociativeArray")
targetRect.x = tweetColumn% * 540 + 60 + 36
targetRect.y = tweetRow% * 165 + 36 + 65 'changed 45 to 65, 135 to 165
targetRect.w = 480 '
targetRect.h = 90 ' two rows of text
canvasItem.TargetRect = targetRect
canvasCount = canvasCount + 1
canvasArray.Push(canvasItem)
tweetCount% = tweetCount% + 1
tweetColumn% = tweetCount% / 4
tweetRow% = tweetCount% - (tweetColumn% * 4)
print "tweetColumn% = "; tweetColumn%; "tweetRow% = ";tweetRow%
' only 8 tweets displayed on HD screen
if tweetCount% = 8 then
exit for
endif
end for
showImageCanvas(canvasArray)
End Function
Kinetics Screensavers