Как интегрировать гем Google Places для получения отзывов Google - PullRequest
0 голосов
/ 04 февраля 2020

Я следую учебному пособию " google_places gem " и испытываю затруднения при интеграции гема Google Адресов с моим кодом для получения отзывов Google для моего приложения.

Я получил разрешение и ключ API был также включен, однако у меня возникают проблемы с доступом к запросу.

doctor_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?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Похоже, ваш ключ API недействителен, потому что у вас "нет разрешения на этот API". Возможно, вы не включили API Google Адресов в своем аккаунте Google.

  1. Убедитесь, что ваш api_key все еще действителен. « Получить ключ API » объясняет, как.

  2. Если это работает, вы должны скрыть свои чувствительные api_key в Rails ' учетные данные (> = Rails 5.2), а затем использовать его в вашем контроллере.

    @client = GooglePlaces::Client.new(Rails.application.credentials[:api_key])
    
0 голосов
/ 04 февраля 2020

Вы должны установить переменную окружения. Думайте об API KEY как о ключах от вашего дома. Вы не хотите, чтобы кому-то, кому вы не доверяете, достались эти ключи. Только вы или люди, которые живут в вашем доме - думайте об этом как о командах - будут иметь ключи.

Теперь способ хранения ключа API, предоставленного Google, находится в переменной среды. Переменная среды - это просто безопасный способ сохранить этот ключ API и получить его из приложения. Вы можете узнать больше о том, как Ruby использует переменные окружения здесь .

Существует гем dotenv , который позволяет вам создать файл .env, в котором вы можете хранить ваши ключи API.

.env:

GOOGLE_API_KEY=<<YOUR API KEY HERE>>

Теперь вы можете передать этот ключ API в свой сценарий, чтобы, когда клиент отправляет запрос в Google API, вы получали ответ .

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

Кроме того, ваш метод show слишком занят, что является анти-паттерном, но я думаю, что вы сможете узнать об этом позже, когда будете лучше понимать Rails и Ruby .

...