2011-06-28 16 views
1

私はログインプロバイダーとしてgoogleとsinatraアプリでOmniAuthを使用しようとしています。 twitterとfacebookのプロバイダを使用すると、正常に動作します:omniauthとherokuの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 - サービスを利用できなくなります。ヒロクのログには何もありません

これは何かに関する考えや提案ですか?

私はこの質問に賞金を始めました。私が望んでいるのは、英雄で動作するサンプルの実装です。


ヒロクのログレベルを上げました。ここで私は今取得していますものです:

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 
+1

[this](https://github.com/intridea/omniauth/wiki/Sinatra-Example)を見ましたか? – daddz

+0

うん、twitterプロバイダがうまく動作します。私はちょうどgoogleも働かせたいと思っています。 B – ConsultUtah

答えて

0

https://github.com/intridea/omniauth/wiki/OpenID-and-Google-Appsのページには、2つの解決策を提供します:。

Herokuの上では、パスを "./tmp"に変更するか、Memcachedを使用することができます。

Memcachedソリューションを試してみたようです - Memcachedインスタンスを実行していて、Herokuで正しくセットアップしていますか?

+0

memcachedを動作させることができませんでした。 Herokuはdalliを必要とし、dalliはOpen IDのmemcacheストアではうまく動作しません。私は./tmpへのパスを変更して、今はGoogleに行き、アプリを許可するように頼んだり、自分のサイトに戻ったり、ログインしたりしません。店が見つからないようです。 – ConsultUtah

+0

?それは解決されていますか? –

+0

それは問題を解決しませんでした。 [OK]を、protect_from_forgeryを無効にすると、これを修正するようだが、私はより良い解決策を望む – qichunren

0

あなたは、サインインするには、GoogleのOpenIDを使用することができます

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 
+0

少なくともそれはクラッシュしません。それはGoogleに行き、権利を与えるように頼んでから戻ってきますが、ログインしません。私はherokuの "ファイルシステム"が読み取り専用であるかもしれないと思う。だから私は別のopenidストアを設定する方法を調べます。 – ConsultUtah