Very strange. The token and access keys were all created yesterday by
twitter. Swithcing to gem 0.3.6 didn't help either.


On Sep 9, 5:08 pm, Tom van der Woerdt <i...@tvdw.eu> wrote:
> 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

Reply via email to