Googleビジネスプロフィールのクチコミを一括で取得するためにGoogle Business Profile APIを使用しました。
その際、エラーが多発したので備忘録としてまとめておきます。
目次
前置き
こちらの記事を参考に申請からデータの取得まで行いました。
とにかくハードルが高い。
そもそも一般公開のAPIではないため、使用前に審査があります。
申請は英語だったりAPIの仕様の理解が必要だったりと玄人向けです。
ブログが丁寧に書いてあるおかげでパッと見、簡単にできると思っていたのですが、全くもってそんなことはなく(泣)頭を抱えながら作業しました。
エラー①cURL error
cURL error 77:と表示されました。
証明書がないよってエラーです。
今回はXAMPPを使ったローカル環境での実行でしたが、Curlを使用するため証明書エラーが出たようです。
Curlも初めて使った
一度は認証作業をコードで回避できたものの、進めているうちに同じ問題に遭遇したため、根本的解決方法を探しました。
解決方法
Curlの証明書をXAMPPのApacheに入れる
手順は下記の通り。
引用元:Laravel 5 Socialite – cURL error 77: error setting certificate verify locations
- Download the certificate from: https://curl.haxx.se/ca/cacert.pem
- Rename the cacert.pem file into curl-ca-bundle.crt
- Copy the file into path/to/xampp/apache/bin
- Restart apache
https://stackoverflow.com/questions/30240840/laravel-5-socialite-curl-error-77-error-setting-certificate-verify-locations
日本語に訳すとこんな感じ
引用元:Laravel 5 Socialite – cURL error 77: error setting certificate verify locations を日本語訳
- https://curl.haxx.se/ca/cacert.pem から証明書をダウンロードする
- 「cacert.pem」を「curl-ca-bundle.crt」にリネームする
- path/to/xampp/apache/bin へコピーする
- apacheを再起動する
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は管理画面から確認することができます。
- 管理画面を開く
- 右上の三点メニューを押す
- ビジネスプロフィールの設定
- 詳細設定
- ビジネスプロフィール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ビジネスプロフィール」をしっかり管理しましょう!
\相談だけしたいなら/
\ステップアップしたい方は/