我是初级RoR开发人员。我在将Google Places gem与我的应用程序集成时遇到问题。我的目的是为我的应用程序获取Google评论。我已获得许可,并且API密钥也已启用。但是,我无法访问该请求。
我一直在学习本教程。https://medium.com/ruby-on-rails-development/google-places-gem-21e9e1aac491
doctors_controller.rb
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
我得到的错误:
GooglePlaces::RequestDeniedError in Manage::DoctorsController#show
This API project is not authorized to use this API.
此外,有关如何在views.html上调用它们的说明也将有所帮助。预先感谢,这个菜鸟开发者对此表示感谢
您必须设置环境变量。将API KEY视为房屋的钥匙,您不想让任何人都不信任他们的那些钥匙。只有您或与您住在一起的房子里的人(以团队为单位)才有钥匙。
现在,您存储Google提供的API密钥的方式是在环境变量中。环境变量只是存储该API密钥并能够从应用程序中获取它的一种安全方法。您可以阅读有关Ruby如何使用environment variables.]的更多信息>
有gem dotenv,可让您创建一个.env
文件,您可以在其中存储api密钥。基本上,您将创建一个.env
并在其中存储您的API密钥。
。env
GOOGLE_API_KEY=<<YOUR API KEY HERE>>
现在您可以将此API密钥传递给脚本,这样,当客户端向GOOGLE API发出请求时,您会得到响应。
@client = GooglePlaces::Client.new(ENV['GOOGLE_API_KEY'])
而且,您的
show
方法太忙了,这是一种反模式,但是我认为,如果您对Rails和Ruby有了更好的了解,以后可以进一步了解。
看来您的api密钥无效。