我一直在学习"google_places gem“教程,但在将Google Places gem与我的代码集成来为我的应用程序获取谷歌评论时遇到了麻烦。
我已获得权限,API密钥也已启用,但访问请求时遇到问题。
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中调用它们
发布于 2020-02-05 00:48:13
您必须设置环境变量。把API密钥想象成你房子的钥匙。你不会想让你不信任的人拿到钥匙的。只有你或住在你房子里的人--把它想象成团队--才会有钥匙。
现在,您存储Google提供的API密钥的方式是在一个环境变量中。环境变量只是存储API密钥并能够从应用程序中获取它的一种安全方法。您可以阅读有关Ruby如何使用环境变量here的更多信息。
有一个API,可以让您创建一个dotenv文件,您可以在其中存储您的.env密钥。
.env:
GOOGLE_API_KEY=<<YOUR API KEY HERE>>现在,您可以将这个API密钥传递给您的脚本,这样当客户端向Google API发出请求时,您就会得到响应。
@client = GooglePlaces::Client.new(ENV['GOOGLE_API_KEY']) 此外,您的show方法太忙了,这是一种反模式,但我认为当您对Rails和Ruby有了更好的理解后,您可以进一步了解这一点。
发布于 2020-02-05 01:42:11
您的API密钥可能无效,因为您没有权限访问此API。也许你还没有在你的Google账户中启用Google Places API。
api_key仍然有效。"Get an API Key“解释了如何。api_key隐藏在Rails的credentials (>= Rails 5.2)中,然后在你的控制器中使用它。@client = GooglePlaces::Client.new(Rails.application.credentials:api_key)
https://stackoverflow.com/questions/60060750
复制相似问题