為 Google Maps APIs for Work 實作疑難排解授權

本頁面僅適用於舊版 Maps APIs for Work 或 Maps API for Business 授權的客戶。本頁面不適用於 2016 年 1 月推出之新版 Google Maps APIs Premium Plan 的客戶。

Google Cloud Support 團隊
2011 年 12 月

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

本文適用於遇到此問題並需找到需要授權的確切網址之 Google Maps APIs for Work 客戶。

基本概念

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

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

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

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

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

問題

尚未取得用戶端編號授權的網址之應用程式,將無法透過您的用戶端編號使用 Google Maps APIs。嘗試使用這類應用程式的使用者會收到錯誤訊息,其內容依應用程式嘗試載入的 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 Maps API 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.

  • Google Static Maps APIGoogle Street View Image API 將不會顯示任何錯誤訊息。不過,發給這些使用用戶端編號之 API 的要求如果來自未授權網址,便不受 Google Maps APIs for Work SLA 保障,且無資格使用技術支援。

影響是,使用者將無法使用依賴 Google Maps JavaScript API 的功能。

移除應用程式的用戶端編號可暫時解決此問題,但這樣做會遺失該應用程式的所有 Google Maps APIs for Work 權限。這表示您將喪失使用以下項目的權利:

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

這表示如果僅供內部使用或非免費的應用程式未正確使用有效的 Google Maps APIs for Work 用戶端編號,就違反了免費的 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. 將瀏覽器指向無法使用您的用戶端編號載入 Maps API 的應用程式。您應該會收到上述其中一種錯誤訊息。
  3. 停止擷取 HTTP 流量。這樣一來,可以更輕鬆地檢查已擷取的流量。
  4. 找出嘗試使用您的用戶端編號載入 Maps API 的要求。例如,如果應用程式嘗試載入 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. 該行中的網址即為需要獲得授權以使用您用戶端編號的網址。

尋找共同模式

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

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

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