【解決策あり】Google Business Profile APIでクチコミ取得→エラー多発

【解決策あり】Google Business Profile APIでクチコミ取得→エラー多発

Googleビジネスプロフィールのクチコミを一括で取得するためにGoogle Business Profile APIを使用しました。

その際、エラーが多発したので備忘録としてまとめておきます。

前置き

こちらの記事を参考に申請からデータの取得まで行いました。

Google Business Profile APIを使ってクチコミをPHPで取得する方法について。APIの利用申請やOAuth認証・クライアントライブラリを…
notes.sharesl.net

とにかくハードルが高い。

そもそも一般公開のAPIではないため、使用前に審査があります。

申請は英語だったりAPIの仕様の理解が必要だったりと玄人向けです。

ブログが丁寧に書いてあるおかげでパッと見、簡単にできると思っていたのですが、全くもってそんなことはなく(泣)頭を抱えながら作業しました。

エラー①cURL error

cURL error 77:と表示されました。

証明書がないよってエラーです。

今回はXAMPPを使ったローカル環境での実行でしたが、Curlを使用するため証明書エラーが出たようです。

株式会社まほろば 代表取締役 鈴木こころ

Curlも初めて使った

一度は認証作業をコードで回避できたものの、進めているうちに同じ問題に遭遇したため、根本的解決方法を探しました。

解決方法

Curlの証明書をXAMPPのApacheに入れる

手順は下記の通り。

  1. Download the certificate from: https://curl.haxx.se/ca/cacert.pem
  2. Rename the cacert.pem file into curl-ca-bundle.crt
  3. Copy the file into path/to/xampp/apache/bin
  4. Restart apache
引用元:Laravel 5 Socialite – cURL error 77: error setting certificate verify locations
https://stackoverflow.com/questions/30240840/laravel-5-socialite-curl-error-77-error-setting-certificate-verify-locations

日本語に訳すとこんな感じ

  1.  https://curl.haxx.se/ca/cacert.pem から証明書をダウンロードする
  2. cacert.pem」を「curl-ca-bundle.crt」にリネームする
  3.  path/to/xampp/apache/bin へコピーする
  4. apacheを再起動する
引用元:Laravel 5 Socialite – cURL error 77: error setting certificate verify locations を日本語訳
https://stackoverflow.com/questions/30240840/laravel-5-socialite-curl-error-77-error-setting-certificate-verify-locations

解決までの考え方

ChatGPTにも意見をもらいながら、エラー名で調べました。

こういうエラーは日本語文献がほとんどないため、Google翻訳を駆使して英語のQ&Aも読み漁ります。

引用元はGoogleGoogle Business Profile APIを使用した際の質問ではありませんが、エラーコードが一緒だったので試したところエラーが出なくなりました。

エラー②
Google_Service_MyBusinessBusinessInformation not found

location_name取得のために必要なコードです。

location_nameとはビジネスプロフィールを識別するためのもので、ロケーションごとに一意のIDが割り当てられています。

たとえば当社であれば「株式会社まほろば」に割り当てられたビジネスプロフィールIDを指します。

このlocation_nameを取得するために「My Business BusinessInformation」APIを使うようなのですが、なぜか「not found」とエラーが出ます。

//エラーコード例
Google_Service_MyBusinessBusinessInformation not found

対象のAPIは追加しているし、他の指定方法もわからずで何がなんだかわかりません。

解決方法

location_nameを直接設定する

$location_name  = 'locations/ここにビジネスIDを入れる';

ビジネスプロフィールIDは管理画面から確認することができます。

  1. 管理画面を開く
  2. 右上の三点メニューを押す
  3. ビジネスプロフィールの設定
  4. 詳細設定
  5. ビジネスプロフィールID

たとえばビジネスプロフィールIDが「123456」であれば

$location_name  = 'locations/123456';

とします。

直接指定してしまうのでlocation_name取得に関わるコードはごっそり削除しましょう。

解決までの考え方

幸いなことにaccount_nameは取得できていたためIDも似たようなものだろうと目星がついていました。

また、Googleビジネスプロフィールの操作でIDを確認した記憶があったので、管理画面を探してみることにしました。

試しにそれらしきIDを当てはめてみたところ、解決できました。

複数アカウントを管理している場合は?

大企業でない限り数十店舗持っているなんてケースはないでしょう。

株式会社まほろば 代表取締役 鈴木こころ

大企業なら業者へ依頼してくれ…!

そのため手動でIDを取得しておいて、直接書き換えるなり連携するデータベースに登録するなりして呼び出せばいいのかなと思います。

当社の場合は店舗を選択するホーム画面をつくり、セレクトボックスで切替えできるようにしました。

最後に大切なことを

ローカル環境だからテキトーでも許される!

あくまで自社内で実験的に行っていることなので、ざっくり設計でなんとかなっています。

セキュリティやらUIやら考えると、このままではまずいです。

アカウント連携だけでCSVファイルの出力や視覚化できるサービス(有料)がありますので、基本的には外部サービスを活用するのが良いと思います。

また、Google Business Profile APIはクローズドなAPIです。

事前審査で使用用途を伝える必要がありますので、申請内容と異なる使い方はやめましょう。

Googleビジネスプロフィールのお悩み相談

Googleビジネスプロフィールをもっと活用できないかな?

間違った営業時間がのっているんだけど…

Google検索やGoogleマップで他社と差をつけるために
「Googleビジネスプロフィール」をしっかり管理しましょう!

\相談だけしたいなら/

\ステップアップしたい方は/