Google API无法识别* / 127.0.0.1:*

时间:2016-08-09 12:53:52

标签: google-maps google-maps-api-3 capybara poltergeist

我的应用成功整合了Google Maps JS API / Google Places API网络服务,以创建一些Autocomplete下拉列表。我设置了google api浏览器密钥,因此开发(localhost),暂存和生产网址都有效。但是,在使用此服务的任何页面上,验收测试(使用127.0.0.1)都会中断。例如:

Capybara::Poltergeist::JavascriptError:
   One or more errors were raised in the Javascript code on the page. If you don't care about these errors, you can ignore them by setting js_errors: false in your Poltergeist configuration (see documentation for details).

   Google Maps API error: RefererNotAllowedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error
   Your site URL to be authorized: http://127.0.0.1:52724/clients/3
   Google Maps API error: RefererNotAllowedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error
   Your site URL to be authorized: http://127.0.0.1:52724/clients/3
       at https://maps.googleapis.com/maps/api/js?v=3.exp&key=(my_browser_key)&signed_in=true&libraries=places:34 in hb

我尝试将不同的127.0.0.1配置添加到我的浏览器密钥凭证中但没有用,例如: http://127.0.0.1:* , */127* , and */127.0.0.1:\d\d\d\d\d/*

最后一个看起来很有趣,因为我的测试套件的每次新运行在127.0.0.1之后产生5个随机数字,如上面的错误所示。

*我不想通过更改错误中提到的poltergeist配置来忽略JS错误。话虽如此,我实际上并没有在任何这些验收测试中使用该服务。我不想测试谷歌功能,我想测试围绕这些下拉菜单的自定义功能。

1 个答案:

答案 0 :(得分:3)

能够通过将app_host和server_port直接设置到我的Capybara配置中来环绕这个。感谢接受的答案here。我将其添加到我的spec_helper文件中:

 def set_host(host)
   default_url_options[:host] = host
   Capybara.app_host = "http://" + host
 end

 RSpec.configure do |config|
   config.before(:each) do
     Capybara.current_driver = :poltergeist
     Capybara.javascript_driver = :poltergeist
     set_host("127.0.0.1:30111")
     Capybara.server_port = 30111
   end
 end

然后我在我的Google API密钥凭据中指定了这个确切的server_port。验收测试现在通过了。

更新:

Google的说明似乎已过时且不完整(叹息)。经过多次实验后,只需127.0.0.1 */即可完成此任务。

上述解决方案也适用。