如何集成Google Places gem以获取Google评论

问题描述 投票:0回答:2

我一直在遵循“ google_places gem”教程,在将Google Places gem与我的代码集成以获取针对我的应用程序的Google评论时遇到了麻烦。

我已经获得许可,并且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中称呼他们?

ruby-on-rails ruby google-maps google-places
2个回答
0
投票

看来您的API密钥无效,因为您没有获得“对此API的许可”。也许您尚未在Google帐户中启用Google Places API。

  1. 请确保您的api_key仍然有效。 “ Get an API Key”解释了如何。

  2. 如果可行,您应该将敏感的api_key隐藏在Rails的credentials(> = Rails 5.2)中,然后在控制器中使用它。

    @client = GooglePlaces::Client.new(Rails.application.credentials[:api_key])
    

0
投票

您必须设置环境变量。将API KEY视为房屋的钥匙。您不想让任何您不信任的人都可以使用这些密钥。只有您或居住在您房屋中的人(将其视为团队)才能拥有钥匙。

现在,您存储Google提供的API密钥的方式是在环境变量中。环境变量只是存储该API密钥并能够从应用程序中获取它的一种安全方法。您可以阅读有关Ruby如何使用环境变量here的更多信息。

有一个dotenv宝石,可让您创建一个可以存储API密钥的.env文件。

。env:

GOOGLE_API_KEY=<<YOUR API KEY HERE>>

现在您可以将此API密钥传递给脚本,这样,当客户端向Google API发出请求时,您就会得到响应。

 @client = GooglePlaces::Client.new(ENV['GOOGLE_API_KEY']) 

而且,您的show方法太忙了,这是一种反模式,但是我认为,当您对Rails和Ruby有了更好的了解之后,您可以稍后再进一步学习。

© www.soinside.com 2019 - 2024. All rights reserved.