在 Google Cloud Console 中管理用戶端 ID 的位置
付費方案用戶端 ID 管理功能會從地圖「憑證」頁面上 Google Cloud 的支援入口網站,遷移至「服務帳戶」部分下方。
注意事項:Google 地圖平台付費方案不再開放註冊或提供給新客戶。
Google 地圖平台付費方案用戶端 ID 僅限用於已獲明確授權的網址;如果您在未取得授權的網址使用用戶端 ID,系統就會傳回錯誤訊息。
如遇相關問題,Google 地圖平台付費方案客戶可按照這篇文章的說明,找出需要取得授權的網址。
基本概念
用戶端 ID 只能用於必須取得授權的網址,以免第三方在自己的網站中使用您的用戶端 ID;這類網址可以明確連往單一網頁,也可以連至整個網域。
如要取得授權網址的清單,或是要授權其他網址,請前往「憑證」頁面,捲動到「用戶端 ID」部分。
您一次可新增最多 100 個網址,而每一個用戶端 ID 可連結最多 3,000 個已授權網址。假如您預計讓應用程式代管超過 3,000 個地點的 Google 地圖內容,請改用 API 金鑰。
如想進一步瞭解如何授權網址,請參閱開發人員指南。
問題說明
如果應用程式所在的網址並未獲得用戶端 ID 使用授權,就無法透過用戶端 ID 使用 Google 地圖平台。在這種情況下,系統會根據應用程式嘗試載入的 API,向應用程式使用者顯示相關錯誤訊息,而且需要 Maps JavaScript API 才能運作的功能都將無法使用。
- Maps JavaScript API 會顯示下列訊息:
此網頁無法顯示 Google 地圖元素,因為這個網址並未獲得授權,無法使用所提供的 Google 地圖用戶端 ID。錯誤代碼:UnauthorizedURLForClientIdMapError
- 如果您使用的是 Maps JavaScript API 3.18 版或更舊版本,系統會顯示下列訊息:
Google 已停止支援此應用程式使用 Google 地圖平台功能,因為這個網站並未獲得授權,無法使用所提供的 Google 地圖用戶端 ID。如果您是這個應用程式的擁有者,請參閱開發人員指南,進一步瞭解如何註冊網址。
從應用程式移除用戶端 ID 並不是有效的修正方式*,因為這麼做會導致該應用程式失去所有的 Google 地圖平台付費方案權限。這表示您將無法享有:
- 服務水準協議 (SLA) 的完善保障。
- 客戶支援。
- 更高的網路服務上限。
- 商業等級條款及細則。
- 公司內部網路的應用程式支援服務。
這表示凡是未正確使用有效 Google 地圖平台付費方案用戶端 ID 的僅限內部使用/付費應用程式,都將違反標準 Google 地圖平台服務條款的規定。
解決方法
首先,請確實找出需要使用用戶端 ID 的網址並進行授權,以利解決問題。
在多數情況下,您必須授權讓「應用程式」使用用戶端 ID。應用程式通常會使用多個有共通模式的網址,例如店家搜尋器所在網址可能是 example.com/stores
或 stores.example.com
。因此,您找出來的網址必須與自家應用程式使用的每個網址都相符。
注意事項:授權給 www.example.com
並「不會」讓 stores.example.com
或 example.com
的任何其他子網域一併獲得授權。
您授權的網址可以明確連往單一網頁,也可以連至整個網域 (包括其子網域),詳情請參閱開發人員指南。我們建議直接授權給模式大致類似的多個網址,但您必須是管理員才能進行這項操作。
注意事項:除非貴機構可完全控管網域之下的所有內容,否則我們不建議授權給整個網域。舉例來說,如果您授權給 blogspot.com
網域,表示所有人都可以透過該網域使用您的用戶端 ID,而且產生的費用都由您支付。較理想的做法是只授權給特定網誌,例如 googlegeodevelopers.blogspot.com
或該網誌中的特定網頁。
如何找出正確網址
網址通常列在瀏覽器的網址列中;在不使用 <iframe>
標記的公開網站上,通常可以輕易找到網址。如有疑問,您可以使用下列方法進行驗證。
有一些較複雜的應用程式載入的 Google 地圖平台網址,可能不是使用者在網址列中看到的網址;這種情形可能是因為網站使用了 <iframe>
標記,或是載入 API 的網頁網址是由伺服器動態產生並傳送至瀏覽器的。這時如要找出有問題的網址,就必須檢查從瀏覽器傳送至 Google 伺服器的特定 HTTP 要求。
瀏覽器會將載入 API 的要求傳送給 Google,而需要授權的網址就在這類要求的 Referer
標頭中。每一個 API 的載入網址都不同:
- Maps JavaScript API:
https://maps.googleapis.com/maps/api/js?...
- Maps JavaScript API 第 2 版:
https://maps.googleapis.com/maps?file=api&...
視應用程式設定的 API 載入方式而定,傳送至 maps.googleapis.com
的所有要求可能會傳給 maps.google.com
或 maps-api-ssl.google.com
。因此,在尋找上述要求時,需要留意的重點通常是路徑 (上方範例網址中的粗體字部分)。
在瀏覽器的 HTTP 標頭中找出網址
您必須先從瀏覽器中擷取上述要求,再查看要求中的 Referer
標頭。有許多現成的免費工具可用來擷取主要瀏覽器中的 HTTP 標頭,如下所列:
- Google Chrome 中提供的開發人員工具。
- Firefox 適用的 LiveHTTPHeaders。
- Safari 中提供的開發人員工具。
- Internet Explorer (或其他任何可搭配 Windows 系統運作的瀏覽器) 適用的 Fiddler。
注意事項:您必須設定 Fiddler2 才能擷取 HTTPS 流量,請到這裡查看相關詳情。
如果您無法直接從瀏覽器擷取 HTTP 標頭,我們建議使用 Wireshark 等網路通訊協定分析工具來擷取 HTTP 流量。不過,Wireshark 的操作方式比上述工具更加複雜,如果您對 Wireshark 不熟悉,請上網查看相關教學。
取得要使用的工具後,請按照下列步驟找出需要授權的網址:
- 啟動擷取工具,並確認工具會從瀏覽器擷取 HTTP 要求。
- 將瀏覽器指向無法使用您的用戶端 ID 載入 Google 地圖平台的應用程式,您應該會看到上文所列的其中一個錯誤訊息。
- 停止擷取 HTTP 流量,這樣比較容易查看擷取到的流量。
- 尋找嘗試利用您的用戶端 ID 載入 Google 地圖平台的要求。舉例來說,如果您的應用程式嘗試載入 Maps JavaScript API,請找出像下列這樣的要求:
GET /maps/api/js?client=gme-yourclientid HTTP/1.1
- HTTP 要求標頭會緊接在這一行後面,不會換行。請找出樣式如下的標頭:
Referer: http://www.example.com/stores/find?zip=94043
- 需要經過授權才能使用您用戶端 ID 的網址就在這一行內。
透過瀏覽器的 JavaScript 控制台找出網址
如果您在未獲授權的網站上使用 API 金鑰或用戶端 ID,Maps JavaScript API 會在 window.console
中寫入錯誤訊息。您可以在錯誤訊息中找到正確的網址,方法是在主控台中搜尋如下所示的錯誤訊息:
Google Maps Platform error: UnauthorizedURLForClientIdMapError ... Your site URL to be authorized: http://www.example.com/stores/find?zip-94043
想知道如何找出錯誤訊息,請參閱「在瀏覽器中檢查錯誤」一節的內容。
找出共通模式
為確保整個應用程式都能利用您的用戶端 ID 載入 Google 地圖平台,您必須在應用程式使用的全部網址中找出共通模式,然後按照開發人員指南說明的規則,授權給與符合該模式的相關網址。
這類網址模式通常就像目錄 (例如 example.com/stores
) 或子網域 (例如 stores.example.com
) 一樣很好辨認,一般只要查看幾個網址就能推斷出來。
如果您處理的應用程式較為複雜,可能就得針對會向使用者顯示並呈現地圖的網址,逐一重複進行上述步驟,但您有可能在花了大把時間和精神後,仍然無法找出所有的網址。因此,我們會建議您找開發人員幫忙找出網址模式。