NotLoadingAPIFromGoogleMapsError происходит случайным образом с Google Maps Javascript API v3 - PullRequest
1 голос
/ 08 апреля 2020

Мое веб-приложение загружает Карты Google JS API v3 в заголовок html следующим образом:

    <head>
    <script src="https://maps.googleapis.com/maps/api/js?key=MY_API_KEY&libraries=places"></script>
    </head>

Все работает нормально, за исключением ~ 1 из 100 просмотров страниц на мобильных устройствах, Карты Google сделают обратный вызов к глобальному gm_authFailure, который, согласно Google, происходит, когда «аутентификация не проходит» https://developers.google.com/maps/documentation/javascript/events#auth -errors

Для отладки я записываю весь консольный журнал из загрузки документа, и в моей глобальной функции gm_authFailure:

  1. Я печатаю журнал, который перед вызовом gm_authFailure всегда показывает нижеприведенное, что, согласно документам, происходит, когда Google определяет, что библиотека карт не была загружена из https://maps.googleapis.com/maps/api/js:

    Google Maps JavaScript API error: NotLoadingAPIFromGoogleMapsError
    https://developers.google.com/maps/documentation/javascript/error-messages#not-loading-api-from-google-maps-error
    
  2. Я также собираю стек вызовов, который вызвал gm_authFailure, используя new Error().stack, который выводит ниже, который предлагает a. библиотека Карт загружается с maps.googleapis.com, и b. ошибка возникает при аутентификации библиотеки, а не при вызове библиотеки для ее использования.

    at gm_authFailure (https://EXAMPLE.COM/MY_PATH:3276:22)
        at https://maps.googleapis.com/maps-api-v3/api/js/40/7/common.js:73:368
            at Qp.o (https://maps.googleapis.com/maps-api-v3/api/js/40/7/common.js:149:177)
                at Object.c [as _tj1nu1] (https://maps.googleapis.com/maps-api-v3/api/js/40/7/common.js:67:84)
                    at https://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate?1shttps%3A%2F%EXAMPLE.COM%2FMY_PATH&4sMY_API_KEY&callback=_xdc_._tj1nu1&key=MY_API_KEY&token=18280:1:28
    

Гипотеза:

  1. У затронутых пользователей есть приложение, расширение браузера или функция сохранения данных сотовой связи, которая блокирует или кэширует библиотеку карт и, таким образом, сбивает с толку библиотеку карт
  2. Странно, что в gm_authFailure callstack инициирующий URL-адрес 'https://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate' мой ключ API указан дважды?

Вещи, которые я знаю:

  1. Когда вызывается gm_authFailure, библиотека больше не будет работать, например, я ' m не может создать новую карту:

    var test_map = new google.maps.Map(document.getElementById("test_google_map"), {"zoom":2})
    console.log(test_map.zoom)
    

    не определено, в отличие от 2

  2. Пользователи, которые вызывают эту ошибку, часто имеют другие записанные загрузки страниц в те же & разные дни, что и загрузить без ошибок.
  3. Я не могу воспроизвести ошибку, используя то же устройство / браузер и посещая ту же страницу
  4. Даже если это происходит только в ~ 1% загрузок страниц, это происходит ~ 100 раз / день, так что я уверен, что это не фл уке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...