омниаут и гугл с синатрой на героку - PullRequest
1 голос
/ 28 июня 2011

Я пытаюсь использовать OmniAuth в приложении sinatra с Google в качестве поставщика логина. С помощью твиттера и фейсбука провайдеры работают нормально:

require 'omniauth'
require 'openid'
require 'openid/store/filesystem'


use OmniAuth::Builder do
use OmniAuth::Strategies::OpenID, OpenID::Store::Filesystem.new('./tmp'), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'  
end

get '/sign_in'
  redirect '/auth/google'
end

Мысли? Когда браузер пытается получить «/ auth / google», он получает 503 - Служба недоступна. В логах героки ничего нет

Мысли или предложения о том, что это может быть?

Я только что получил награду за этот вопрос - на что я надеюсь, это пример реализации, которая работает на heroku.


Я увеличил уровень логов на героку. Вот что я получаю сейчас:

2011-07-07T16:15:09+00:00 heroku[nginx]: GET /sign_in/?p=google HTTP/1.1 | 207.224.213.179 | 269 | http | 302
2011-07-07T16:15:09+00:00 app[web.1]: I, [2011-07-07T09:15:09.863397 #1]  INFO -- OpenID: Error attempting to use stored discovery information: OpenID::TypeURIMismatch
2011-07-07T16:15:09+00:00 app[web.1]: I, [2011-07-07T09:15:09.863480 #1]  INFO -- OpenID: Attempting discovery to verify endpoint
2011-07-07T16:15:09+00:00 app[web.1]: I, [2011-07-07T09:15:09.863512 #1]  INFO -- OpenID: Performing discovery on https://www.google.com/accounts/o8/id?id=AItOawlAKE9QAQb9mMRyYCCmAkEYIcqfmhrA080
2011-07-07T16:15:09+00:00 app[web.1]: I, [2011-07-07T09:15:09.865033 #1]  INFO -- OpenID: WARNING: making https request to https://www.google.com/accounts/o8/id?id=AItOawlAKE9QAQb9mMRyYCCmAkEYIcqfmhrA080 without verifying server certificate; no CA path was specified.
2011-07-07T16:15:09+00:00 app[web.1]: 207.224.213.179 - - [07/Jul/2011 09:15:09] "POST /auth/google/callback HTTP/1.1" 302 - 0.0956
2011-07-07T16:15:09+00:00 heroku[router]: GET myurl.com/auth/google/callback dyno=web.1 queue=0 wait=0ms service=100ms status=302 bytes=0

Ответы [ 2 ]

0 голосов
/ 04 июля 2011

Страница на https://github.com/intridea/omniauth/wiki/OpenID-and-Google-Apps дает два возможных решения:

В Heroku вы можете изменить путь на «./tmp» или использовать Memcached.

Похоже, вы уже опробовали решение Memcached - у вас есть экземпляр Memcached, запущенный и правильно настроенный на Heroku?

0 голосов
/ 29 июня 2011

Вы можете использовать openid от Google для входа.

use OmniAuth::Builder do
  provider :openid, OpenID::Store::Filesystem.new('/tmp')
  use OmniAuth::Strategies::OpenID, OpenID::Store::Filesystem.new('/tmp'), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end
...