-1

I am trying to use OmniAuth to connect with foursquare. I followed the instruction in RailsCast: 241: Simple OmniAut.

I stopped at the part where using a SessionController to raise response in YAML, and deploy the codes to Heroku (I found using the local machine won't work at all).

However, instead of seeing a YAML structured page, I get the URL:

http ://XX-sunset-XX.heroku.com/auth/foursquare/callback?code=10LBOAEUQQNRZ01CLRYUC0FBFZAFGFYUDVOGVE51HO3BZBXX

with a page that shows (HTML format, I think it's Heroku's default error handling):

We're sorry, but something went wrong.
We've been notified about this issue and we'll take a look at it shortly.

What's going on?

Heroku link

Below is the trace from Heroku:

2011-06-01T08:18:59+00:00 app[web.1]:
2011-06-01T08:18:59+00:00 app[web.1]:
2011-06-01T08:18:59+00:00 app[web.1]: Started GET "/test/index" for 211.23.144.132 at Wed Jun 01 01:18:59 -0700 2011
2011-06-01T08:18:59+00:00 app[web.1]:   Processing by TestController#index as HTML
2011-06-01T08:18:59+00:00 app[web.1]: Rendered test/index.html.erb within layouts/application (2.3ms)
2011-06-01T08:18:59+00:00 app[web.1]: Completed 200 OK in 3ms (Views: 3.0ms | ActiveRecord: 0.0ms)
2011-06-01T08:18:59+00:00 heroku[router]: GET simple-sunset-248.heroku.com/test/index dyno=web.1 queue=0 wait=0ms service=11ms bytes=1603
2011-06-01T08:18:59+00:00 app[web.1]:
2011-06-01T08:18:59+00:00 app[web.1]:
2011-06-01T08:18:59+00:00 app[web.1]: Started GET "/stylesheets/all.css" for 211.23.144.132 at Wed Jun 01 01:18:59 -0700 2011
2011-06-01T08:18:59+00:00 app[web.1]:
2011-06-01T08:18:59+00:00 app[web.1]: ActionController::RoutingError (No route matches "/stylesheets/all.css"):
2011-06-01T08:18:59+00:00 app[web.1]:
2011-06-01T08:18:59+00:00 app[web.1]:
2011-06-01T08:18:59+00:00 app[web.1]:
2011-06-01T08:18:59+00:00 heroku[router]: GET simple-sunset-248.heroku.com/stylesheets/all.css dyno=web.1 queue=0 wait=0ms service=5ms bytes=922
2011-06-01T01:19:00-07:00 heroku[nginx]: GET /stylesheets/all.css HTTP/1.1 | 211.23.144.132 | 953 | http | 404
2011-06-01T08:19:04+00:00 app[web.1]:
2011-06-01T08:19:04+00:00 app[web.1]:
2011-06-01T08:19:04+00:00 app[web.1]: Started GET "/auth/foursquare" for 211.23.144.132 at Wed Jun 01 01:19:04 -0700 2011
2011-06-01T08:19:04+00:00 heroku[router]: GET simple-sunset-248.heroku.com/auth/foursquare dyno=web.1 queue=0 wait=0ms service=6ms bytes=1032
2011-06-01T01:19:05-07:00 heroku[nginx]: GET /auth/foursquare HTTP/1.1 | 211.23.144.132 | 1062 | http | 302
2011-06-01T08:19:14+00:00 app[web.1]:
2011-06-01T08:19:14+00:00 app[web.1]:
2011-06-01T08:19:14+00:00 app[web.1]: Started GET "/auth/foursquare/callback?code=4GU3FEFI2Z3JB40ZDZC5EFOF2XG2LOAKRZJWQY041CDDJ5XS" for 211.23.144.132 at Wed Jun 01 01:19:14 -0700 2011
2011-06-01T08:19:14+00:00 app[web.1]:
2011-06-01T08:19:14+00:00 app[web.1]: OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
2011-06-01T08:19:14+00:00 app[web.1]:
2011-06-01T08:19:14+00:00 app[web.1]:
2011-06-01T08:19:14+00:00 app[web.1]:
2011-06-01T08:19:14+00:00 heroku[router]: GET simple-sunset-248.heroku.com/auth/foursquare/callback dyno=web.1 queue=0 wait=0ms service=15ms bytes=934
2011-06-01T01:19:15-07:00 heroku[nginx]: GET /auth/foursquare/callback?code=4GU3FEFI2Z3JB40ZDZC5EFOF2XG2LOAKRZJWQY041CDDJ5XS HTTP/1.1 | 211.23.144.132 | 965 | http | 500
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Howard Huang
  • 355
  • 1
  • 4
  • 9
  • Can you give us the stacktrace? Does this happen in development? And if you are developing directly to heroku I wouldnt do that. You get better logs using the rails development server. – Devin M Jun 01 '11 at 06:31
  • It's probably stupid to ask, but I am really a ROR newbie. How do I get the stacktrace? Should I get it from local dev server or heroku? I know it's always good to use local dev env to play things around, however I simply can't make FourSquare Oauth work in dev env. A friend told me that it may be working if it's on a real server. – Howard Huang Jun 01 '11 at 06:50
  • local dev server, you should have a better time getting it to work there. – Devin M Jun 01 '11 at 07:02

1 Answers1

1

I don't use Ruby or Ruby on Rails, but I can tell you that it appears foursquare did not implement the OAuth 2.0 standard in a standard way, that is, according to the OAuth documentation in Foursquare Dev OAuth Doc. It's not using standard parameters that many implemented OAuth libraries are using, for example, "client_ID" v. "oauth_consumer_key".

What you're seeing above is that you sent your request (as it says in their documentation) asking for "response_type=code" which returns to your callback URI with parameter "code=4GU3FEFI2Z3JB40ZDZC5EFOF2XG2LOAKRZJWQY041CDDJ5XS" which you then need to parse and send back to get the access token you need for API calls.

Further in the documentation, in the Ajax example, it shows you can use "response_type=token" which will give an "access_token=ACCESS_TOKEN" as a parameter in the response.

I hope this helps a bit. Good luck.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
eudaimos
  • 665
  • 7
  • 11