4.0.10.1にてGoogleMapsが動作しない

dotnetxp > 4.0.10.1にてGoogleMapsが動作しない @ 2018/2/14 21:35
4.0.10.1にアップデートしたところ、GoogleMapsの表示部分に以下のメッセージが表示され動作しなくなりました。
APIは設定しています。

「Google Maps を読み込めません。管理画面で正しい住所が設定されているか確認してください。」

対応方法があればご教授ください。

■BaserCMSのバージョン:4.0.10.1
■スマートURLの利用:ON
■設置フォルダ:ドキュメントルート
■PHPスキル(自己評価):C
■OSの種類:Ubuntu 14.04.2 LTS
■PHP/DBのバージョン:5.5.9/MySQL 5.5.54

seto > Re: 4.0.10.1にてGoogleMapsが動作しない @ 2018/2/15 10:19
こんにちは。

こちらでも不都合を確認しましたのでチケットの作成を行いました。
修正をお待ちください。
http://project.e-catchup.jp/issues/20495
sdish > Re: 4.0.10.1にてGoogleMapsが動作しない @ 2018/4/13 9:53
私も同様の現象になり、2ヵ所の環境で一応解決しております。
明確な解決方法ではないうえ、少し環境が異なるかもしれませんが、解決の糸口になれば幸いです。
サーバは、さくらインターネットのスタンダードとさくらVPSのCentOS7です。
また、両方ともSSLにて運用しています。(環境の詳細は後述)

1.下記ファイルを編集
# vi /var/www/html/lib/Baser/Lib/BcGmaps.php
### 定数宣言部分 ###
const GMAPS_API_BASE_URL = "https://maps.googleapis.com/maps/api/geocode/xml"; <--httpsに変更
### コンストラクタ部分 ###
public function __construct($apiKey) {
/*
$this->_gmapsApiUrl = self::GMAPS_API_BASE_URL . "?key=" . $apiKey; <--- コンストラクタ部を無効にする。
*/
}
### メソッド部分 ###
protected function _geocode($param) {
/*
$requestUrl = $this->_gmapsApiUrl . "&address=" . urlencode($param); <--- 元の処理を無効にする。
*/
$this->_gmapsApiUrl = self::GMAPS_API_BASE_URL . "?address=" . urlencode($param); <--- ここから2行を追加
$requestUrl = $this->_gmapsApiUrl . "&key=" . $apiKey; <--- ここも追記

2.使っているテーマのBcGooglemapsHelper.phpのAPI呼び出しが古い場合がある(APIキーを指定しないバージョン)
  その場合は、ROOT/lib/Baser/View/Helper/BcGooglemapsHelper.phpと入れ替え等を行う。
  また、下記の部分を編集。
$googleScript = '<script src="' . $apiUrl . '?key=' . h($apiKey) . '"></script>'; <-- ?key= を ?v=3.exp&key= に変更

3.GoogleMapsのAPIキー設定
HTTPリファラーの設定時、下記2パターンを登録
*.yourdomain.com/*
https://yourdomain.com/shop (何故か、ワイルドカードのみだとリファラエラーが発生)

1.について補足
HTTPで取得しようとするとRequests to this API must be over SSL.と帰ってきたため。
また、?key=*****&address=*****で取得すると、addressがないとエラーが発生したので、公式通り?address=**&key=***とした。

2ヵ所とも上記の設定で修正可能でした。
・BaserCMSのバージョン 4.1.0.1
・レンタルサーバ名 さくらインターネットスタンダード
・スマートURL ON
・設置フォルダ ドキュメントルート
・利用しているデータベース SQLite
・PHPスキル E(C言語系およびサーバエンジニアです)
・OS FreeBSD 9.1
・PHP 5.6.33
・DB SQLite

・BaserCMSのバージョン 4.0.10.1 -> 4.1.0.1
・レンタルサーバ名 さくらVPS
・スマートURL ON
・設置フォルダ ドキュメントルート
・利用しているデータベース SQLite
・PHPスキル E(C言語系およびサーバエンジニアです)
・OS CentOS 7
・PHP 5.6.35
・DB SQLite
ryuring > Re: 4.0.10.1にてGoogleMapsが動作しない @ 2018/7/10 22:06
こんばんは。

こちらの件、確認しました。
結論からお伝えすると、GMAPS_API_BASE_URL を https に変更する必要がありますが、
他の箇所についてコードの変更は不要でした。
(最新版ではすでに https に更新されています)

baserCMSがインストールされたばかりの状態で表示されるGoogleMapは、
Javascript だけでなく、PHPからもリクエストを送っています。


1. ロケーション情報(経度、緯度)情報を取得
システム管理のGoogleMaps住所で設定した情報を元にPHPで取得

2. 地図を取得
1で取得した情報を元にJavascriptで地図を取得


どうやら、HTTPリファラーによる制限を行っている場合、PHPによるロケーション情報の取得に失敗するようです。
これは、HTTPリファラー制限がブラウザからのJavasciprtでの取得に対してのものであるからのようです。
つまり使えない。

ではどうやって制限するかというと、IPアドレスで制限するとうまくいくようです。
【参考】How do I resolve the error: "API keys with referer restrictions cannot be used with this API."?


WebサーバのIPアドレスを調べて設定してみてください。




ちなみに、BcGmaps でのリクエスト時に、key を空でリクエストすると、HTTPリファラーを設定しても成功します。
sdish さんのコード修正は、$apiKey という変数の宣言がない状態で、結果、key を空にした状態でリクエストしている形になっていました。
つまり APIキーなしのリクエストの状態です。

おそらくこれは、移行時期である現在だけがうまくいっているだけで、将来的には利用できなくなる事が想定されます。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

ryuring > Re: 4.0.10.1にてGoogleMapsが動作しない @ 2018/7/11 13:28
こんにちは。

IPアドレスの制限だけではうまくいかない事が判明しましたので、根本的な処理を変更しました。
https://github.com/baserproject/basercms/commit/0587cf6f88286f00baeb67baeb9a2f88bc400dd8

こちらより、BcGooglemapsHelper.php をダウンロードし、上書きすると、HTTPリファラ制限でうまくいきます。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
39 人のユーザが現在オンラインです。 (38 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 39