0

更新: 下部の解決策を参照してください。

Ruby と Heroku の開発は初めてです。Heroku/Ruby ホスティングを使用して Facebook にアプリをデプロイしました。Heroku がデプロイするデフォルトの Ruby/FB アプリは、Heroku で実行すると問題なく動作します。しかし、heroku アプリをクローンしてローカルで実行すると、問題が発生し始めました。

最初の問題は app.rb の先頭に追加することで修正され、次にapp.rbrequire "rubygems"に追加することで Facebook iFrame の問題が解決されました。set :protection, :except => :frame_options

今私の問題は、access_token がまだないときにこれらの行が実行された後に @app が nil であることです。

@graph  = Koala::Facebook::API.new(session[:access_token])

# Get public details of current application
@app  =  @graph.get_object(ENV["FACEBOOK_APP_ID"])

これにより、テンプレートのレンダリングが次のエラーで中断されます。

NoMethodError - undefined method `[]' for false:FalseClass:
/Users/todd-chapman/Documents/vivid-winter-3317/views/index.erb:7:in `evaluate_source'

私は何を間違っていますか?ローカル開発を設定する手順を見逃していませんか?

追加情報: これは、SSL を使用せずにローカルで開発できるように、Facebook アプリでサンドボックス モードを有効にしたことに関連している可能性があります。

ありがとう!

解決:

質問してから 8 時間以内に自分の質問に答えられるほどの担当者がいないので、私が見つけた解決策を次に示します。

私の Facebook アプリは非 SSL 開発をサポートするためにサンドボックス モードに@graph.get_object(ENV["FACEBOOK_APP_ID"])なっているため、サンドボックス モード アプリには Facebook アプリ管理者のみがアクセスできるため、 への呼び出しは機能しません。したがって、nil の結果が返されます。

長期的な解決策は、SSL リバース プロキシを設定して、Facebook アプリのサンドボックス モードがオフになっているときにローカルで開発できるようにすることです。

4

1 に答える 1

0

解決:

私のFacebookアプリは非SSL開発をサポートするためにサンドボックスモードになっているため、サンドボックスモードのアプリにはFacebookアプリの管理者だけがアクセスできるため、@graph.get_object(ENV ["FACEBOOK_APP_ID"])の呼び出しは機能しません。したがって、nilの結果が返されます。

長期的な修正は、SSLリバースプロキシを設定して、Facebookアプリでサンドボックスモードがオフになっているときにローカルで開発できるようにすることです。ここにそれに関する良い記事があります:http ://www.subelsky.com/2012/01/my-twelve-factor-app-development.html

于 2012-07-08T14:02:59.603 に答える