Facebookにはwebsite URL
が必要です.WebサイトはOauthリクエストの検証のためにホストされています。 Facebookは有効なcallback URLs
を必要とします。基本的にFacebookがOauthトークンを安全に渡すことができるURLのリストです。ここでFacebook Oauth on Cloud9
するFacebookのOAuth設定について、私のcloud9環境対私の地元の環境の違いです:
ローカルホスト:
- ウェブサイトのURL:
http://localhost:3000
- コールバックURL:
http://localhost:3000/auth/facebook/callback
Cloud9:
- ウェブサイトのURL:
http://myapp-cireficc.c9.io/
- コールバックURL:
http://myapp-cireficc.c9.io/auth/facebook/callback
私のlocalhostの設定が正常に動作します。私はcloud9に私のアプリを実行したときしかし、私はFacebookのから次のエラーを取得する:URLを考える
は、アプリケーションの設定によって許可されていません:指定されたURLの1つ以上は、アプリの設定で許可されていません。それはウェブサイトURLまたはCanvas URLと一致する必要があります。または、ドメインはAppのドメインの1つのサブドメインでなければなりません。
:これは、これら2つのパラメータのいずれかが間違っている...とデバッグのビットの後、それはFacebookのように見えることを意味している は
redirect_uri=http%3A%2F%2Fmyapp-cireficc.c9.io%3A80%2Fauth%2Ffacebook%2Fcallback
このコールバックURLにアクセスしようとしています
そして、もっと読みやすい文字にそれをデコードした後、我々は持っている:
http://myapp-cireficc.c9.io:80/auth/facebook/callback
これはランダムなようです:80がコールバックURLに追加されているため、Oauthリクエストが送信されたときに追加され、Facebookがそれを応答コールバック現在、が正しくありません。です。ので:80が追加され、期待と実際コールバックが異なります期待
を:http://myapp-cireficc.c9.io/auth/facebook/callback
実際:http://myapp-cireficc.c9.io:80/auth/facebook/callback
これは何かであることを私には思えますクラウド9はリクエストを送信したときに追加しています(多分ドメイン名の設定方法のせいでしょうか?)。 Facebook Oauthがcloud9で作業するにはどうすればよいですか?
注:Cloud9のenv.PORT
は8080
あり、そしてenv.IP
は0.0.0.0
です。これは、コールバックの:80の出所ですが、この問題を回避する方法はわかりません。
興味深いことに、私はステージング環境をHerokuに設定しており、Herokuにはこの問題はありません。 http://myapp-staging.herokuapp.com
と正しいコールバックURLを使用して、FacebookのOauthに簡単にアクセスできます。
うーん、これは興味深いです。あなたは:80をウェブサイトURLに追加して、これを今のところ回避することができます。 – Mutahhir
@Mutahhirええ、なぜそれが起こっているのか分かりません。私は最初に問題を認識したときにそれを試しましたが、サーバーはハングしていました。それは、データベースの設定のために何かが欠けていたことが判明したので、「ユーザを見つける」機能がタイムアウトしました。いずれにしても、URLに ':80'を追加すると、それほど大したことではないと思います! –