Hi all,
I’m having problems posting to Twitter. I use a slightly adapted version (I copy/pasted all of the request URLs from the Twitter page) of the code that Peach posted at techority:
http://corona.techority.com/2011/05/26/post-to-twitter-from-your-application/
io.output():setvbuf('no')
oAuth = require ("oAuth") -- using the oAuth.lua that came with SDK 868
local bodyTxt = "This is my text to Tweet" -- I just want to tweet out something simple
local appURL = "http://google.com" -- I tried with my own website, no difference (but is identical to Twitter callback URL)
local consumer\_key = "consumer\_key" -- key and secret like given by Twitter
local consumer\_secret = "consumer\_secret"
local access\_token
local access\_token\_secret
local user\_id
local screen\_name
local twitter\_request = (oAuth.getRequestToken(consumer\_key, appURL, "https://api.twitter.com/oauth/request\_token", consumer\_secret))
print("twitter\_request\_token: ", twitter\_request.token) -- this is always nil for some reason!?
local twitter\_request\_token = twitter\_request.token
local twitter\_request\_token\_secret = twitter\_request.token\_secret
local function listener(event)
local remain\_open = true
local url = event.url
if url:find("oauth\_token") then
url = url:sub(url:find("?") + 1, url:len())
local authorize\_response = responseToTable(url, {"=", "&"})
if (authorize\_response.oauth\_verifier == nil)
then
print("verifier nil. keeping webview up by returning true...")
return true
else
print("verifier received! about to get access token")
end
remain\_open = false
local access\_response = responseToTable(oAuth.getAccessToken(authorize\_response.oauth\_token, authorize\_response.oauth\_verifier, twitter\_request\_token\_secret, consumer\_key, consumer\_secret, "https://api.twitter.com/oauth/access\_token"), {"=", "&"})
print("after get access token")
access\_token = access\_response.oauth\_token
access\_token\_secret = access\_response.oauth\_token\_secret
user\_id = access\_response.user\_id
screen\_name = access\_response.screen\_name
-- API CALL:
------------------------------
--change the message posted
local params = {}
params[1] =
{
key = 'status',
value = bodyTxt
}
request\_response = oAuth.makeRequest("http://api.twitter.com/1/statuses/update.json", params, consumer\_key, access\_token, consumer\_secret, access\_token\_secret, "POST")
print("req resp ",request\_response)
else
print("auth token not found")
end
return remain\_open
end
function tweetit (event)
-- this one breaks in the simulator with a runtime error because twitter\_request\_token = nil and remains nil throughout, even though I call oAuth..
native.showWebPopup(10, 10, 300, 360, "https://api.twitter.com/oauth/authorize?oauth\_token=" .. twitter\_request\_token, {urlRequest = listener})
end
function responseToTable(str, delimeters)
local obj = {}
while str:find(delimeters[1]) ~= nil do
if #delimeters \> 1 then
local key\_index = 1
local val\_index = str:find(delimeters[1])
local key = str:sub(key\_index, val\_index - 1)
--print("key = "..key)
str = str:sub((val\_index + delimeters[1]:len()))
local end\_index
local value
if str:find(delimeters[2]) == nil then
end\_index = str:len()
value = str
else
end\_index = str:find(delimeters[2])
value = str:sub(1, (end\_index - 1))
str = str:sub((end\_index + delimeters[2]:len()), str:len())
end
--print("value = "..value)
obj[key] = value
--print(key .. ":" .. value)
else
local val\_index = str:find(delimeters[1])
str = str:sub((val\_index + delimeters[1]:len()))
local end\_index
local value
if str:find(delimeters[1]) == nil then
end\_index = str:len()
value = str
else
end\_index = str:find(delimeters[1])
value = str:sub(1, (end\_index - 1))
str = str:sub(end\_index, str:len())
end
obj[#obj + 1] = value
print(value)
end
end
return obj
end
local twitterButton = display.newImageRect ("twitter.png", 100, 100, 10, 10)
twitterButton.x = 150
twitterButton.y = 280
twitterButton:addEventListener("tap", tweetit)
I’m probably missing something very trivial but I am lost at the moment. The popup does not show in CoronaSim or XCode because of that nil value.
Do I need to change something in the of the app on Twitter apart from the already given items? [import]uid: 106658 topic_id: 30216 reply_id: 330216[/import]
