更新: 下部の解決策を参照してください。
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 アプリのサンドボックス モードがオフになっているときにローカルで開発できるようにすることです。