Invalid/Expired token says it all.. Tom
On 9/9/10 11:00 PM, EranD wrote: > Thanks for the help. > > Unfortunately I've already tried all of those :( > > res = access_token.post("/1/statuses/update.xml", {"status" => "Hello > tweet"}) > > response is the same: > "HTTP/1.1 401 Unauthorized\r\n" > -> "Date: Thu, 09 Sep 2010 20:58:01 GMT\r\n" > -> "Server: hi\r\n" > -> "Status: 401 Unauthorized\r\n" > -> "WWW-Authenticate: Basic realm=\"Twitter API\"\r\n" > -> "Content-Type: application/xml; charset=utf-8\r\n" > -> "Content-Length: 139\r\n" > -> "Cache-Control: no-cache, max-age=1800\r\n" > -> "Set-Cookie: k=71.183.40.72.1284065880883182; path=/; expires=Thu, > 16-Sep-10 20:58:00 GMT; domain=.twitter.com\r\n" > -> "Set-Cookie: guest_id=128406588098859508; path=/; expires=Sat, 09 > Oct 2010 20:58:00 GMT\r\n" > -> "Set-Cookie: > _twitter_sess=BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo > %250ASGFzaHsABjoKQHVzZWR7AA%253D > %253D--1164b91ac812d853b877e93ddb612b7471bebc74; domain=.twitter.com; > path=/\r\n" > -> "Expires: Thu, 09 Sep 2010 21:28:00 GMT\r\n" > -> "Vary: Accept-Encoding\r\n" > -> "Connection: close\r\n" > -> "\r\n" > reading 139 bytes... > -> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n <request>/1/ > statuses/update.xml</request>\n <error>Invalid / expired Token</error> > \n</hash>\n" > > Any other thoughts? > > > On Sep 9, 3:37 pm, Taylor Singletary <taylorsinglet...@twitter.com> > wrote: >> Happy to help further: >> >> The line access_token.get("/statuses/update.xml" has two problems... >> >> 1. should have the version slug added in.. /1/statuses/update.xml >> 2. creating a status update requires the POST HTTP method (as opposed to >> GET) >> >> You're very close, provided everything else is working correctly. >> >> Taylor >> >> >> >> On Thu, Sep 9, 2010 at 12:30 PM, EranD <eran.davi...@gmail.com> wrote: >>> Hi Taylor, >> >>> Thanks for the quick response. I stand corrected on the three-legged >>> authentication. Skipping a few steps doesn't make it 2 :) >> >>> You're right about the typo - the code I was using was incorrect. >>> Having fixed it, however, didn't seem to help. Here's the response I'm >>> getting (after the fix): >>> -> "HTTP/1.1 401 Unauthorized\r\n" >>> -> "Date: Thu, 09 Sep 2010 19:25:23 GMT\r\n" >>> -> "Server: hi\r\n" >>> -> "Status: 401 Unauthorized\r\n" >>> -> "WWW-Authenticate: Basic realm=\"Twitter API\"\r\n" >>> -> "Content-Type: application/xml; charset=utf-8\r\n" >>> -> "Content-Length: 137\r\n" >>> -> "Cache-Control: no-cache, max-age=1800\r\n" >>> -> "Set-Cookie: k=71.183.40.72.1284060323860138; path=/; expires=Thu, >>> 16-Sep-10 19:25:23 GMT; domain=.twitter.com\r\n" >>> -> "Set-Cookie: guest_id=128406032386923588; path=/; expires=Sat, 09 >>> Oct 2010 19:25:23 GMT\r\n" >>> -> "Set-Cookie: >>> _twitter_sess=BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo >>> %250ASGFzaHsABjoKQHVzZWR7AA%253D >>> %253D--1164b91ac812d853b877e93ddb612b7471bebc74; domain=.twitter.com; >>> path=/\r\n" >>> -> "Expires: Thu, 09 Sep 2010 19:55:23 GMT\r\n" >>> -> "Vary: Accept-Encoding\r\n" >>> -> "Connection: close\r\n" >>> -> "\r\n" >> >>> The new code is now: >>> consumer = OAuth::Consumer.new("KEY", "SECRET", { :site => "http:// >>> api.twitter.com", :scheme => :header }) >> >>> token_hash = { :oauth_token => "OTHER KEY", :oauth_token_secret => >>> "OTHER SECRET"} >> >>> access_token = OAuth::AccessToken.from_hash(consumer, token_hash) >> >>> res = access_token.get("/statuses/update.xml", {"status" => "Hello >>> tweet"}) >> >>> Any thoughts? >> >>> thanks, >> >>> Eran >> >>> On Sep 9, 1:37 pm, Taylor Singletary <taylorsinglet...@twitter.com> >>> wrote: >>>> Hi Eran, >> >>>> First, just a clarification of terms: this isn't technically "2-legged" >>>> OAuth, this is still three-legged. >> >>>> The code you've pasted here has a mis-spelled key name for ":oauth_token" >>>> (you've provided "oath_token" -- is this true of the code you are >>> executing >>>> as well? >> >>>> I haven't personally tested the 0.4.3 version of the Ruby gem, but have >>> had >>>> ongoing affection for version 0.3.6 for some time. >> >>>> Finally, the error message you are getting back from Twitter is actually >>>> more detailed than what you see in the default exception raising of the >>>> OAuth gem. You'll need to take a look at the raw body response we send >>> you >>>> for more information on why this error might be occurring. >> >>>> Thanks, >>>> Taylor >> >>>> On Thu, Sep 9, 2010 at 10:19 AM, EranD <eran.davi...@gmail.com> wrote: >>>>> Hi, >> >>>>> I'm trying to get a server app to tweet messages to one specific >>>>> account I own. I'm following Twitter's instructions on Twitter's wiki: >>>>> http://developer.twitter.com/pages/oauth_single_token#ruby >> >>>>> I can read information from twitter (e.g. get last 20 tweets), but >>>>> when I try to update my status I get the error "Could not authenticate >>>>> with OAuth" in the body of the 401 response. >> >>>>> The simplified code I'm using is below. Key , secret, access token and >>>>> secret are all copied from my twitter application page on >>>>> developer.twitter.com. OAuth gem version 0.4.3. >> >>>>> Any thoughts or suggestions? >> >>>>> ------ >>>>> consumer = OAuth::Consumer.new("MY KEY", "MY SECRET", { :site => >>>>> "http://api.twitter.com", :scheme => :header }) >> >>>>> token_hash = { :oath_token => "MY ACCESS TOKEN", :oauth_token_secret >>>>> => "MY ACCESS SECRET"} >>>>> access_token = OAuth::AccessToken.from_hash(consumer, token_hash) >> >>>>> res = access_token.get("/statuses/update.xml", {"status" => "Hello >>>>> tweet"}) >>>>> ----- >> >>>>> Response: >>>>> <Net::HTTPUnauthorized 401 Unauthorized readbody=true> >> >>>>> thanks, >> >>>>> Eran >> >>>>> -- >>>>> Twitter developer documentation and resources: >>> http://dev.twitter.com/doc >>>>> API updates via Twitter:http://twitter.com/twitterapi >>>>> Issues/Enhancements Tracker: >>>>> http://code.google.com/p/twitter-api/issues/list >>>>> Change your membership to this group: >>>>> http://groups.google.com/group/twitter-development-talk?hl=en >> >>> -- >>> Twitter developer documentation and resources:http://dev.twitter.com/doc >>> API updates via Twitter:http://twitter.com/twitterapi >>> Issues/Enhancements Tracker: >>> http://code.google.com/p/twitter-api/issues/list >>> Change your membership to this group: >>> http://groups.google.com/group/twitter-development-talk?hl=en > -- Twitter developer documentation and resources: http://dev.twitter.com/doc API updates via Twitter: http://twitter.com/twitterapi Issues/Enhancements Tracker: http://code.google.com/p/twitter-api/issues/list Change your membership to this group: http://groups.google.com/group/twitter-development-talk?hl=en