Ruby on rails 如何整合Google Places gem以获得Google评论
我一直在遵循“”教程,在将Google Places gem与我的代码集成以获取应用程序的Google评论时遇到了问题 我已获得权限,API密钥也已启用,但是,访问请求时遇到问题 drophers_controller.rb:Ruby on rails 如何整合Google Places gem以获得Google评论,ruby-on-rails,ruby,google-maps,google-places,Ruby On Rails,Ruby,Google Maps,Google Places,我一直在遵循“”教程,在将Google Places gem与我的代码集成以获取应用程序的Google评论时遇到了问题 我已获得权限,API密钥也已启用,但是,访问请求时遇到问题 drophers_controller.rb: class Manage::DoctorsController < Manage::BaseController # layout "design" require 'google-places' def show @doctor
class Manage::DoctorsController < Manage::BaseController
# layout "design"
require 'google-places'
def show
@doctor = Doctor.find(params[:id])
authorize @doctor, :manage?
@doctor = @location = @doctor.decorate
#tring out google reviews
api_key = "my_key"
@client = GooglePlaces::Client.new(api_key)
@client = @client.spots(-33.8670522, 151.1957362, :types => 'restaurant')
end
如何在
views.html中调用它们?您必须设置环境变量。把API密钥想象成你房子的钥匙。你不想让你不信任的人拿到那些钥匙。只有你或住在你家里的人——可以把它看作是团队——才有钥匙
现在,您存储Google提供的API密钥的方式是在一个环境变量中。环境变量只是存储API密钥并能够从应用程序获取该密钥的一种安全方式。您可以阅读更多关于Ruby如何使用环境变量的信息
有一个gem,它允许您创建一个.env
文件,您可以在其中存储API密钥
.env:
另外,您的show
方法太忙了,这是一种反模式,但我认为您可以在以后更好地理解Rails和Ruby时了解更多信息。您的API密钥似乎无效,因为您“没有此API的权限”。也许你还没有在你的谷歌账户中启用谷歌PlacesAPI
确保您的api\u密钥仍然有效。”“解释了怎么做
如果它起作用,您应该将敏感的api_键
隐藏在Rails'(>=Rails 5.2)中,然后在控制器中使用它
@client = GooglePlaces::Client.new(Rails.application.credentials[:api_key])
api\u key
通常在环境变量中定义。您在该代码中的何处定义了它?不清楚。你为什么要在places API上查看你的应用程序的评论?如果你在哪里寻找你的业务评论,但应用程序不是一个地方,这是有意义的。除了上面的评论,你启用了什么API?欢迎使用!请阅读所有的“”。你的经验水平不重要,问一些问得好的问题才重要。我感谢支持你的人。所以,我在这里的目的是在我的应用程序中获得谷歌对某一特定地区医生的评论。我已启用地理编码API和google places API。API密钥有效。如果不是,错误就不同了。是的,但由于某些原因,他仍然无法访问此API。正如我所写,PlacesAPI可能未打开。:)是的,我这么做是因为你没有理解上下文。我很早就发布了一个到Places API的链接,你没有检查它。我错误地启用了GoeCodeding API,现在我启用了Google Places。但是,我现在收到了这条消息。您必须在了解更多信息的网站上启用Google云项目的计费。我以为这项服务是免费的,不是吗?它是免费的,但是免费的。这是解释和账单。感谢您的回复,为了更安全的练习,我现在已经将我的凭证放在了.env文件中。在我的应用程序中获取谷歌评论需要付费吗?
GOOGLE_API_KEY=<<YOUR API KEY HERE>>
@client = GooglePlaces::Client.new(ENV['GOOGLE_API_KEY'])
@client = GooglePlaces::Client.new(Rails.application.credentials[:api_key])