簡體   English   中英

如何集成 Google Places gem 以獲取 Google 評論

[英]How to integrate the Google Places gem to obtain Google reviews

我一直在關注“ google_places gem ”教程,但在將 Google Places gem 與我的代碼集成以獲取應用程序的 Google 評論時遇到了問題。

我已獲得許可並且 API 密鑰也已啟用,但是我無法訪問該請求。

醫生_控制器.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 如何使用環境變量的更多信息。

有一個dotenv gem,它允許您創建一個.env文件,您可以在其中存儲 API 密鑰。

.env:

GOOGLE_API_KEY=<<YOUR API KEY HERE>>

現在您可以將此 API KEY 傳遞給您的腳本,這樣當客戶端向 Google API 發出請求時,您會得到響應。

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

另外,你的show方法太忙了,這是一種反模式,但我認為你可以在以后對 Rails 和 Ruby 有更好的了解時了解更多。

您的 API 密鑰似乎無效,因為您“無權使用此 API”。 也許您還沒有在您的 Google 帳戶中啟用 Google Places API。

  1. 確保您的api_key仍然有效。 獲取 API 密鑰”解釋了方法。

  2. 如果它有效,您應該將敏感的api_key隱藏在 Rails 的憑據(> = Rails 5.2)中,然后在您的控制器中使用它。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM