0

Facebook Connectを使用してユーザー登録/ログインを有効にするレールアプリがあります(deviseとomniauthを使用)。Firesheep に関するいくつかの記事を読んだ後、アプリ全体で SSL 通信を強制することにしました。

このチュートリアルに従って、Rails 3.0.x アプリが強制的に SSL 経由でのみ通信するようにしました: http://www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/

そして、locahost:3001 で webrick を使用してローカルでアプリをテストできるように、このチュートリアルに従いました: http://blog.readypulse.com/2012/01/19/setup-webrick-to-serve-ssl-https-as- well-as-non-ssl-http-traffic-side-by-side/

ここまでは順調ですね。私のアプリは、実行中に SSL 通信を強制しますlocalhost:3000。Facebook Connect と通信しようとすると問題が発生します

Facebook 開発アプリのサイト URL を に変更するとhttps://localhost:3001、fb グラフは次のように応答します。 { "error": { "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.", "type": "OAuthException", "code": 191 } }

ただし、サイトの URL を に変更するhttp:localhost:3001と、サーバーから、ページの読み込み中に接続がリセットされたというエラーが表示されます。ブラウザーの URL バーには、読み込もうとした URL が であることが示されていlocalhost:3001/auth/facebook/callback?code=MYCODEHEREます。その URL の前に「https://」を追加してリロードすると、期待どおりにページが読み込まれます。

おそらく私の問題は、SSL に関する非常に基本的な知識に起因しています。しかし、SSL経由でFacebook接続のローカルテストをサポートするためにFacebook開発アプリをセットアップする方法を誰かが私に説明できれば、とても感謝していますか?

4

3 に答える 3

2

わかった。動作しました。localhost:3001 で ssl 経由で fb と twitter の登録/ログインをテストできるように、私が行ったことは次のとおりです。

まず、アプリの FB サイトの URL を に設定しhttp://localhost:3001ます。次に、omniauth イニシャライザを次のように変更しました。

if RAILS_ENV == "production"
  full_host = 'https://www.mydomain.com'
  Rails.application.config.middleware.use OmniAuth::Builder do
    provider :facebook, 'myfbappid', 'myfbsecret', {:scope => 'email, publish_stream'}
    provider :twitter, 'mytwitterappid', 'mytwittersecret'
  end
  Twitter.configure do |config|
    config.consumer_key = 'myconsumerkey'
    config.consumer_secret = 'myconsumersecret'
    config.oauth_token =    'myoauthtoken'
    config.oauth_token_secret = 'myoauthtokensecret'
  end
elsif RAILS_ENV == "development"
  full_host = 'https://localhost:3001'
  Rails.application.config.middleware.use OmniAuth::Builder do
    provider :facebook, 'myfbdevappid', 'myfbdefappsecret', {:scope => 'email, publish_stream'}
    provider :twitter, 'mytwitterdevappid', 'mytwitterdevappsecret'
  end
  Twitter.configure do |config|
    config.consumer_key = 'mytwitterconsumerkey'
    config.consumer_secret = 'mytwitterconsumersecret'
    config.oauth_token =    'mytwitteroauthtoken'
    config.oauth_token_secret = 'mytwitteroathtokensecret'
  end
end
OmniAuth.config.full_host = full_host
于 2012-07-03T05:01:19.713 に答える
2

ローカルホスト ( ) を指すサブドメインをセットアップするwhatever IN A 127.0.0.1か、ファイルを介してそのサブドメインを作成する必要があり/etc/hostsます。

どちらの場合も、Facebook アプリに登録されているドメインでhttp://yoursubdomain.yourdomain/auth/....使用できます。yourdomain

于 2012-07-02T22:14:17.130 に答える
0

https://ngrok.com/を使用して、ローカルホストを指す安全な URL を取得できます

于 2014-03-14T17:51:36.193 に答える