2015-10-14 110 views
5

Facebook需要一個website URL,其中託管網站用於驗證Oauth請求。 Facebook還需要有效的callback URLs,基本上是Facebook可以安全地將Oauth令牌傳遞給的URL列表。Facebook Oauth on Cloud9

下面是我的本地環境對我CLOUD9環境的差異,有關Facebook的OAuth設置:

本地主機

  • 網站URLhttp://localhost:3000
  • 回調URLhttp://localhost:3000/auth/facebook/callback

CLOUD9

  • 網站URLhttp://myapp-cireficc.c9.io/
  • 回調URLhttp://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.PORT8080env.IP0.0.0.0。這似乎是在回調來自的地方,但我不知道如何解決這個問題。有趣的是,我有我的在Heroku上設置的環境,Heroku沒有這個問題。我可以通過使用http://myapp-staging.herokuapp.com和正確的回調URL輕鬆訪問Facebook Oauth。

+1

嗯,這很有趣。你現在可以在網站URL中加上:80來解決這個問題。 – Mutahhir

+0

@Mutahhir是的,我不知道爲什麼會發生。當我第一次意識到這個問題時,我試過了,但服務器掛了。事實證明,我錯過了設置數據庫的一些東西,所以'查找用戶'功能超時。無論如何,在工作的URL上添加':80',所以我想這不是什麼大問題! –

回答

1

有同樣的問題:將端口(:80)添加到cloud9 url,然後將其添加到有效的OAuth重定向URI爲我解決了它。

1

@ AnthonyGrove的回答對我無效。

但是,將端口(:8080)添加到cloud9 url,然後將其添加到有效的OAuth重定向URI爲我解決了它。

docsPlease note that 8080, 8081, and 8082 are the only available ports on a hosted Cloud9 workspace.