2016-12-02 61 views
5

不是測試應用程序我一直在努力弄清楚這個問題出來了好幾個星期,我不能弄明白。Ruby on Rails的OmniAuth Facebook的工程在Heroku直播應用程序,但是,CLOUD9

我正在管理髮布到Facebook的Ruby On Rails應用程序。開發環境位於Cloud9 IDE中,實時站點位於Heroku上。該應用程序與Developers.Facebook.com有一個完整的應用程序和與之相關的測試應用程序的相應帳戶。

我有我的Heroku設置與完整的Facebook應用程序完美工作。

問題始於Facebook測試應用程序中的Cloud9設置。每當我試圖通過API連接時,我得到以下錯誤:

enter image description here

緊跟此錯誤:

enter image description here

我已經使用了我的網址,但下列選項嘗試似乎沒有任何工作:

https://{workspace}-{username}.c9.io/ 
https://{workspace}-{username}.c9.io:80/ 
https://{workspace}-{username}.c9.io:8080/ 
https://{workspace}-{username}.c9users.io/ 
https://{workspace}-{username}.c9users.io:80/ 
https://{workspace}-{username}.c9users.io:8080/ 

這是我的FacebookAccount模型。

class FacebookAccount < ActiveRecord::Base 
    belongs_to :user 
    has_many :facebook_pages 

    if Rails.env.production? 
    FACEBOOK_APP_ID = ENV["FACEBOOK_APP_ID"] 
    FACEBOOK_SECRET = ENV["FACEBOOK_SECRET"] 
    else 
    FACEBOOK_APP_ID = "XXXXXXXXXXXXXXX" 
    FACEBOOK_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
    end 

    def self.from_omniauth(auth) 
    oauth = Koala::Facebook::OAuth.new(FACEBOOK_APP_ID, FACEBOOK_SECRET) 
    new_access_info = oauth.exchange_access_token_info auth.credentials.token 
    new_access_token = new_access_info["access_token"] 
    new_access_expires_at = DateTime.now + new_access_info["expires"].to_i.seconds 
    where(provider: auth.provider, uid: auth.uid).first_or_initialize.tap do |facebook_account| 
     facebook_account.provider   = auth.provider 
     facebook_account.uid    = auth.uid 
     facebook_account.name    = auth.info.name 
     facebook_account.image   = auth.info.image 
     facebook_account.email   = auth.info.email 
     facebook_account.oauth_token  = new_access_token 
     facebook_account.oauth_expires_at = new_access_expires_at 
     facebook_account.save! 
    end 
    end 
end 
+0

你可以嘗試用'http',所以'HTTP:// {}工作區 - {用戶名} .c9.io /'並通過'http:// {}工作區 - {用戶名} .c9users.io /' –

+0

@BradyDowling,我已經嘗試的了,還是結果是一樣的 – Okomikeruko

回答

2

當您設置在Facebook開發設置頁面您的網站的網址,你必須提供兩個URL。

  1. 您的網站(www.example.com)
  2. 您的網站的回調URL(www.example.com/auth/facebook/callback)

如果一個或基準url另一個不存在,您會收到這些錯誤,告訴您回叫網址未列入白名單或網站網址未列入白名單。

添加您的網站作爲平臺下的設置>基本,然後找到「添加平臺」。在那裏添加你的網站網址。

enter image description here

看來,C9增加了端口號回調URI。嘗試添加該端口號的OAuth的有效回調的URI:

http://[workspace]-[username].c9.io:80/auth/facebook/callbacķ

+0

我在App Domains字段中有'[workspace] - [username] .c9.io'和'c9.io'。我在網站>站點URL字段中有'http:// [工作區] - [用戶名] .c9.io /',並且我有'http:// [工作區] - [用戶名] .c9.io /', 'HTTP:// [工作區] - [用戶名] .c9.io/AUTH/failure','HTTP:// [工作區] - [用戶名] .c9.io/AUTH/facebook',&'HTTP:// [工作區] - [用戶名] .c9。在Facebook登錄>設置>客戶端OAuth設置>有效的OAuth重定向URI字段中輸入io/auth/facebook/callback。仍然不起作用。 – Okomikeruko

+0

我忘了提及,您是否將您的網站添加爲平臺?如果你不添加你的網站,它也不會加載。轉到設置>基本並查找「添加平臺」。然後在那裏添加你的網站網址。 –

+0

爲了更加清晰,我更新了答案,並添加了我的意思。 –

1

看起來像這是你在Facebook註冊和配置你的應用程序的問題。確保你已經將這些URI添加到你的Facebook應用白名單。 See here for more details

+0

我一直在添加這些東西,Facebook的應用程序白名單。它仍然不起作用。 – Okomikeruko

相關問題