带foursquare的Omniauth:改为获取“ ... / auth / foursquare / callback?code = XXXX”

问题描述

| 我正在尝试使用OmniAuth与Foursquare连接。我按照RailsCast:241:Simple OmniAut中的说明进行操作。 我停在使用SessionController在YAML中引发响应的部分, 并将代码部署到Heroku(我发现使用本地计算机根本无法工作)。 但是,我没有看到YAML结构化页面,而是得到了URL: http://XX-sunset-XX.heroku.com/auth/foursquare/callback?code=10LBOAEUQQNRZ01CLRYUC0FBFZAFGFYUDVOGVE51HO3BZBXX 带有显示页面(HTML格式,我认为这是Heroku的错误处理):
We\'re sorry,but something went wrong.
We\'ve been notified about this issue and we\'ll take a look at it shortly.
这是怎么回事? Heroku链接 以下是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
    

解决方法

        我不使用Ruby或Ruby on Rails,但是我可以告诉您,foursquare似乎没有以标准方式实现OAuth 2.0标准,也就是说,根据Foursquare Dev OAuth Doc中的OAuth文档。许多已实现的OAuth库都没有使用标准参数,例如\“
client_ID
\” v。\“
oauth_consumer_key
\”。 您在上面看到的是,您发送了请求(如其文档中所述),请求“
response_type=code
\”,它返回带有参数“
code=4GU3FEFI2Z3JB40ZDZC5EFOF2XG2LOAKRZJWQY041CDDJ5XS
\”的回调URI,然后您需要解析并发回以获得您需要API调用的访问令牌。 在文档的进一步内容中,在Ajax示例中,它显示您可以使用\“
response_type=token
\”,它将在响应中给出\“
access_token=ACCESS_TOKEN
\”作为参数。 我希望这能有所帮助。祝好运。