Ruby on Rails的OmniAuth Facebook的工程在Heroku直播应用程序,但是,CLOUD9
不是测试应用程序我一直在努力弄清楚这个问题出来了好几个星期,我不能弄明白。Ruby on Rails的OmniAuth Facebook的工程在Heroku直播应用程序,但是,CLOUD9
我正在管理发布到Facebook的Ruby On Rails应用程序。开发环境位于Cloud9 IDE中,实时站点位于Heroku上。该应用程序与Developers.Facebook.com有一个完整的应用程序和与之相关的测试应用程序的相应帐户。
我有我的Heroku设置与完整的Facebook应用程序完美工作。
问题始于Facebook测试应用程序中的Cloud9设置。每当我试图通过API连接时,我得到以下错误:
紧跟此错误:
我已经使用了我的网址,但下列选项尝试似乎没有任何工作:
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
当您设置在Facebook开发设置页面您的网站的网址,你必须提供两个URL。
- 您的网站(www.example.com)
- 您的网站的回调URL(www.example.com/auth/facebook/callback)
如果一个或基准url另一个不存在,您会收到这些错误,告诉您回叫网址未列入白名单或网站网址未列入白名单。
添加您的网站作为平台下的设置>基本,然后找到“添加平台”。在那里添加你的网站网址。
看来,C9增加了端口号回调URI。尝试添加该端口号的OAuth的有效回调的URI:
http://[workspace]-[username].c9.io:80/auth/facebook/callbacķ
我在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
我忘了提及,您是否将您的网站添加为平台?如果你不添加你的网站,它也不会加载。转到设置>基本并查找“添加平台”。然后在那里添加你的网站网址。 –
为了更加清晰,我更新了答案,并添加了我的意思。 –
看起来像这是你在Facebook注册和配置你的应用程序的问题。确保你已经将这些URI添加到你的Facebook应用白名单。 See here for more details。
我一直在添加这些东西,Facebook的应用程序白名单。它仍然不起作用。 – Okomikeruko
你可以尝试用'http',所以'HTTP:// {}工作区 - {用户名} .c9.io /'并通过'http:// {}工作区 - {用户名} .c9users.io /' –
@BradyDowling,我已经尝试的了,还是结果是一样的 – Okomikeruko