Omniauth с foursquare: вместо этого получите «... / auth / foursquare / callback? Code = XXXX» - PullRequest
0 голосов
/ 01 июня 2011

Я пытаюсь использовать OmniAuth для соединения с foursquare .Я следовал инструкции в RailsCast: 241: Simple OmniAut .

Я остановился на той части, где с помощью SessionController для повышения ответа в YAML и разверните коды на Heroku (я обнаружил, что использование локального компьютера не будет работать вообще).

Однако вместо просмотра структурированной страницы YAML я получаю URL:

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

со страницей, на которой отображается ошибка (формат HTML по умолчанию, я думаю, что это):

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

1 Ответ

1 голос
/ 07 июня 2011

Я не использую Ruby или Ruby on Rails, но могу вам сказать, что, похоже, foursquare не реализовал стандарт OAuth 2.0 стандартным способом, то есть согласно документации OAuth в Foursquare Dev OAuth Doc . Это не использует стандартные параметры, которые используют многие реализованные библиотеки OAuth, например, "client_ID" v. "oauth_consumer_key".

То, что вы видите выше, это то, что вы отправили свой запрос (как говорится в их документации) с запросом «response_type=code», который возвращает ваш URI обратного вызова с параметром «code=4GU3FEFI2Z3JB40ZDZC5EFOF2XG2LOAKRZJWQY041CDDJ5XS», который вам затем нужно проанализировать и отправить обратно, чтобы получить токен доступа, необходимый для вызовов API.

Далее в документации, в примере Ajax, показано, что вы можете использовать "response_type=token", который даст "access_token=ACCESS_TOKEN" в качестве параметра в ответе.

Надеюсь, это немного поможет. Удачи.

...