2016-12-02 60 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

相关问题