Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何正确设置Rails应用的Facebook应用页面?_Ruby On Rails_Capybara_Phantomjs_Facebook Login_Poltergeist - Fatal编程技术网

Ruby on rails 如何正确设置Rails应用的Facebook应用页面?

Ruby on rails 如何正确设置Rails应用的Facebook应用页面?,ruby-on-rails,capybara,phantomjs,facebook-login,poltergeist,Ruby On Rails,Capybara,Phantomjs,Facebook Login,Poltergeist,我有一个非常常见的问题(这很常见,必须有一个标签): 应用程序配置不允许给定URL。示例:应用程序的设置不允许一个或多个给定URL。它必须与网站URL或画布URL匹配,或者域必须是应用程序域之一的子域 在以下情况下会发生这种情况-我编写rspec/capybara规范。其中一些规范测试某些链接是否正确重定向。问题中的链接是myapp的子域:。(我正在使用该服务,但我认为这与此无关) 因此,我有以下配置: 生产应用程序正在运行 我在http://localhost:3000/ 我已经这样设置了测

我有一个非常常见的问题(这很常见,必须有一个标签):

应用程序配置不允许给定URL。示例:应用程序的设置不允许一个或多个给定URL。它必须与网站URL或画布URL匹配,或者域必须是应用程序域之一的子域

在以下情况下会发生这种情况-我编写rspec/capybara规范。其中一些规范测试某些链接是否正确重定向。问题中的链接是myapp的子域:。(我正在使用该服务,但我认为这与此无关)

因此,我有以下配置:

  • 生产应用程序正在运行
  • 我在
    http://localhost:3000/
  • 我已经这样设置了测试端口:
    Capybara.server\u port=42082
我遇到问题的一个测试是:

scenario 'is redirected to feedback page in a new tab after clicking on feedback button' do
  within('.menu-wrapper') { click_on I18n.t('shared.header.help') }
  new_tab = page.driver.window_handles.last
  page.within_window(new_tab) do
    expect(current_url).to eq 'http://support.myapp.com/'
  end
end
测试通过了,但在控制台中我得到了消息,如开头所述。在我的Facebook应用程序页面上,据我阅读的许多SOs所知,与我的问题相关的字段有(我还提供了它们的当前状态):

在“设置/基本”选项卡下:

  • 应用程序域-空。我试图将
    localhost
    放在这里,但它抱怨这是一个顶级域。因此,我尝试了其他几个版本,如
    localhost.com
    myapp.com
    。执行此操作时,我将主机文件编辑为
    127.0.0.1 localhost.com
  • 画布URL-
    http://localhost:3000/?origin=facebook&utm_campaign=fb&utm_source=fb
  • 安全画布URL-
    https://localhost:3000/?origin=facebook&utm_campaign=fb&utm_source=fb
  • 站点URL-我根本没有这个字段。对于各种测试,我通过单击“+添加平台”=>网站“启用”了它
在“设置/高级”选项卡下:

  • 有效的OAuth重定向URI-空
因此,我尝试了这些字段的几种组合,因为我一整天都在解决这个问题。我得出的一些结论是:

  • 在测试过程中,导致问题的url是
    http://localhost:42082
    或。不幸的是,错误消息没有告诉我这两个问题中的哪一个导致了问题
  • 我尝试使用以下值使用localhost:42082,但不起作用:
    • 应用程序域:
      localhost.com
      -如上所述,我还编辑了我的主机文件
    • 画布URL/安全画布URL-将端口从3000更改为42082
    • 网站URL:
      http://localhost.com:42082/
    • 有效的OAuth重定向URI-
      http://localhost:42082/
  • 我怀疑问题实际上来自于这不仅是一个支持页面,而且是一个反馈页面。有一个选项可以投票选择新的应用程序功能。如果我之前未在本地登录我的应用程序而访问该链接,并单击投票按钮,我会得到如下字段:

当我之前登录时,我可以直接投票,所以我猜访问确实会触发一些Facebook回调


我应该在我的Facebook应用程序页面中使用什么值来获取给定的URL消息?您还有其他的故障排除方法吗?

在测试中依赖外部服务是一种不好的做法。相反,您应该使用webmock或similarI模拟此类请求。我无法理解您是如何使用
localhost
作为服务器URL链接到
support.myapp.com
。1.在Facebook上购买并授权testmyapp.com,2。使用
/etc/hosts
将testmyapp.com重定向到
localhost
,3。根据经验编写测试。@MikDiet:当然,这是一个验收测试,检查应用程序是否在真实环境中工作,没有模拟或存根,这难道不合理吗?