疑難排解 Google Maps APIs Premium Plan 網址授權

Google Maps APIs Premium Plan 用戶端編號以明確授權的網址為限。如果您嘗試將用戶端編號用於未獲授權的網址,便會收到錯誤訊息。

本文適用於遇到此問題並需找到需獲得授權的確切網址之 Google Maps APIs Premium Plan 客戶。

基本概念

為避免第三方在他們網站上使用您的用戶端編號,用戶端編號的使用範圍僅限於您需授權的網址清單。每個網址可以是小到特定單一網頁,或大到一整個網域。

要獲得已授權的網址清單,或要授權更多網址:

  1. 登入 Google Cloud Support Portal
  2. 從左側選單中,按一下 [Maps:Manage Client ID]

您一次可以新增最多 100 個網址,總計最多 3000 個網址。如果您需要更高上限,請聯絡 Google Cloud Support。

開發人員指南中有更多關於授權網址的資訊。

問題

尚未取得用戶端編號授權的網址之應用程式,將無法透過您的用戶端編號使用 Google Maps APIs。嘗試使用這類應用程式的使用者會收到錯誤訊息,其內容依應用程式嘗試載入的 API 而定。使用者將無法使用依賴 Google Maps JavaScript API 的功能。

  • Google Maps JavaScript API 會顯示此訊息:

    This page was unable to display a Google Maps element.This URL is not authorized to use the provided Google Maps Client ID.Error Code:UnauthorizedURLForClientIdMapError

  • 如果您使用 Google Maps JavaScript API v3.18 或更舊版本,系統會顯示此訊息:

    Google has disabled use of the Google Maps APIs for this application.This site is not authorized to use the Google Maps client ID provided.If you are the owner of this application, you can learn more about registering URLs in the developer's guide.

從應用程式移除用戶端編號並不是有效的解決辦法*。如果這麼做,您將會失去該應用程式的所有 Premium Plan 權限。這表示您將喪失使用以下項目的權利:

  • 穩健的服務水準協議 (SLA)。
  • 客戶支援。
  • 提高 Web 服務上限。
  • 商業等級的條款及條件。
  • 工作場所內的內部網路應用程式支援。

這表示如果僅供內部使用或非免費的應用程式未正確使用有效的 Google Maps APIs Premium Plan 用戶端編號,就違反了免費的 Google Maps APIs 服務條款

解決方案

正確的解決方案是找出並授權要使用您用戶端編號的正確網址。

在大部分情況下,您需要授權應用程式來使用您的用戶端編號。應用程式經常使用具有共同模式的多個網址,例如商店尋找程式可以位於 example.com/stores 或位於 stores.example.com。您需要找到一個共通網址能適用於應用程式所使用的所有網址。

注意:授權 www.example.com不會授權 stores.example.com 或任何其他 example.com 的子網域。

您授權的每個網址可以是小到特定單一網頁,或大到一整個網域,包含其子網域。如需詳細資訊,請參閱開發人員指南。我們建議您授權能適用廣泛的設定或網址的網址(只要您具有全部網址的管理權限)。

注意:除非您的組織能全權控制網域的所有內容,否則不建議您授權整個網域。例如,授權整個 blogspot.com 網域會讓該網域中的每個人使用您的用戶端編號,這會損害您的權益。反之,您應該僅授權一個特定網誌,例如 googlegeodevelopers.blogspot.com 或甚至是該網誌中的特定頁面。

如何找出正確網址

您一般可在瀏覽器的位置列找到網址。這在不使用 <iframe> 標記的公用網站上通常很容易。如有疑慮,您可以使用下列方式來進行驗證。

複雜的應用程式可能會從不是使用者位置列中的網址載入 Google Maps APIs。這種情形與 <iframe> 標記相關,或當載入 API 的頁面網址是在伺服器上動態產生,然後再傳送到瀏覽器時發生。您需要檢查瀏覽器發給 Google 伺服器的特定 HTTP 要求,才能在這些情況中找出正確網址。

在瀏覽器傳送給 Google 以載入 API 的要求中,Referer 標頭的網址,就是需要授權的網址。每個 API 會從不同網址載入:

所有針對 maps.googleapis.com 的要求均可傳送到 maps.google.commaps-api-ssl.google.com,這取決於應用程式載入 API 的設定方式因此,尋找上述要求時,路徑通常是重點(粗體部分)。

從瀏覽器中的 HTTP 標頭

在檢查上述要求中的 Referer 標頭前,您必須先從瀏覽器擷取標頭。有許多免費工具可以擷取所有主要瀏覽器中的 HTTP 標頭:

注意:您必須設定 Fiddler2,才能擷取 HTTPS 流量。請參閱此處的詳細資訊。

如果您無法直接從瀏覽器擷取 HTTP 標頭,可以嘗試使用類似 Wireshark 的網路通訊協定分析器來擷取 HTTP 流量。此工具的操作方式可能會比上述工具來得複雜,如果您不熟悉 Wireshark,請參閱網路上的 Wireshark 教學課程

取得所選的工具後,請遵循以下步驟來找出需要授權的網址:

  1. 啟動擷取工具。確認該工具是從您的瀏覽器擷取 HTTP 要求。
  2. 將瀏覽器指向無法使用您的用戶端編號載入 Google Maps APIs 的應用程式。您應該會收到上述其中一種錯誤訊息。
  3. 停止擷取 HTTP 流量。這樣一來,可以更輕鬆地檢查已擷取的流量。
  4. 找出嘗試使用您的用戶端編號載入 Google Maps APIs 的要求。例如,如果應用程式嘗試載入 Google Maps JavaScript API,請尋找類似這樣的要求:
    GET /maps/api/js?client=gme-yourclientid HTTP/1.1
  5. HTTP 要求標頭會緊接在該行之後,中間沒有分行符號。請尋找類似這樣的標頭:
    Referer: http://www.example.com/stores/find?zip=94043
  6. 該行中的網址即為需要獲得授權以使用您用戶端編號的網址。

從瀏覽器的 JavaScript 控制台

如果在未獲授權的網站中使用您的 API 金鑰或用戶端編號,Google Maps JavaScript API 會在 window.console 中寫入錯誤訊息。您可以在錯誤訊息中找到正確網址。在控制台中,搜尋看起來如下的錯誤訊息:

Google Maps APIs error: UnauthorizedURLForClientIdMapError ...
Your site URL to be authorized: http://www.example.com/stores/find?zip-94043

如需有關尋找錯誤訊息的協助,請參閱檢查瀏覽器中的錯誤一節。

尋找共同模式

為確定整個應用程式能夠使用您的用戶端編號載入 Google Maps APIs,您必須遵循開發人員指南中的規則,找出應用程式使用的所有網址之共同模式,並授權一個能代表此模式的網址。

這通常只是一個目錄(例如 example.com/stores)或一個子網域(例如 stores.example.com);通常從幾個網址就可以輕鬆推算出來。

處理複雜的應用程式時,您可能需要針對數個與使用者互動並顯示地圖的網址重複上述步驟。然而,這實在相當繁瑣,而且仍會產生一組不完整的網址。針對此類應用程式,開發人員最好提供網址模式。