Facebook需要一個website URL
,其中託管網站用於驗證Oauth請求。 Facebook還需要有效的callback URLs
,基本上是Facebook可以安全地將Oauth令牌傳遞給的URL列表。Facebook Oauth on Cloud9
下面是我的本地環境對我CLOUD9環境的差異,有關Facebook的OAuth設置:
本地主機:
- 網站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
我的本地設置工作得很好。然而,當我在CLOUD9運行我的應用程序,我從Facebook得到以下錯誤:
給定的URL不會被應用程序配置允許的:一個或多個指定的網址不被應用的設置允許的。它必須與網站網址或Canvas網址匹配,或者該網域必須是其中一個應用網域的子網域。
這意味着這兩個參數之一是錯誤的......和一點調試後,它看起來像Facebook正在試圖訪問此回調URL:
redirect_uri=http%3A%2F%2Fmyapp-cireficc.c9.io%3A80%2Fauth%2Ffacebook%2Fcallback
和解碼到這一點更可讀的字符後,我們有:
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
這在我看來是什麼cloud9在發送請求時正在添加(可能是由於他們的域名是如何設置的?)。我可以做些什麼來讓Facebook Oauth在cloud9上工作?
注意:CLOUD9的env.PORT
是8080
和env.IP
是0.0.0.0
。這似乎是在回調來自的地方,但我不知道如何解決這個問題。有趣的是,我有我的在Heroku上設置的環境,Heroku沒有這個問題。我可以通過使用http://myapp-staging.herokuapp.com
和正確的回調URL輕鬆訪問Facebook Oauth。
嗯,這很有趣。你現在可以在網站URL中加上:80來解決這個問題。 – Mutahhir
@Mutahhir是的,我不知道爲什麼會發生。當我第一次意識到這個問題時,我試過了,但服務器掛了。事實證明,我錯過了設置數據庫的一些東西,所以'查找用戶'功能超時。無論如何,在工作的URL上添加':80',所以我想這不是什麼大問題! –