О «недействительной подписи» tiankeng, обнаруженной в WeChat JSSDK

внешний интерфейс WeChat Android iOS

Фон продукта:

Брат по продукту хочет разработать страницу, открытую в WeChat, которая должна получить функцию текущего географического местоположения пользователя, поэтому он начинает историю о мухах и дерьме с WeChat JSSDK.

техническое образование:

Основная особенность Vue заключается в том, что маршрутизатор использует режим истории, а также пакет WeChat JSSDK для реализации функции позиционирования.

текст:

Слишком много информации в Интернете WX.config (), основная конфигурация обойдена здесь, а самая утекающая проблема, встречающаяся на этот раз ---- Неверная подпись

Изучив различные ситуации, я не могу найти причину, и волшебство в том, что местоположение может быть получено нормально на Android, но это всегда «недопустимая подпись» на ios, и текущий напечатанный URL-адрес, очевидно, совпадает с подписанный URL. Почему до сих пор возникают проблемы с подписью? ! ? ? ?

Структура страницы следующая:

СПА:

  • страница А
  • страница Б

Это очень просто.Все приложение входит из A, а затем переходит к B. B нужно получить местоположение.Я только что настроил JSSDK WeChat в B, а затем столкнулся с проблемой, упомянутой выше. Потом! ! Вот ключ! ! Во время некоторой отладки я обновился прямо со страницы B, и тогда это сработало! ! ! ! ! Что за хрень? ! !

Каждый раз, когда я обновляюсь и загружаюсь из B, это так шелковисто, а из A в B каждый раз, когда я стреляю, поэтому с этой проблемой я пришел в этот новый мир ---- О режиме html5-History в проблемах браузера WeChat внутри

Выяснилось, что это соус фиолетовый? ! !

IOS: версия WeChat IOS, версия WeChat Android, URL-адрес SPA не будет меняться каждый раз при переключении маршрута, а параметр URL-адреса запроса подписи должен быть URL-адресом текущей страницы, который является URL-адресом, когда страница была изначально ввели.

Android: версия WeChat для Android, URL-адрес SPA будет меняться каждый раз при переключении маршрута, а параметр URL-адреса запроса подписи должен быть URL-адресом текущей страницы (а не при первоначальном входе на страницу).

Пит отец! Благодаря мне URL-адрес подписи запроса, очевидно, совпадает с URL-адресом текущей страницы (location.href)!

решение:

URL-адрес (window.entryUrl), который входит в SPA, хранится глобально. Android остается неизменным. Он по-прежнему получает URL-адрес текущей страницы. IOS использует window.entryUrl, а затем подписывает, готово!

// 记录进入app的url,后面微信sdk
if (window.entryUrl === '') {
	window.entryUrl = location.href.split('#')[0]
}
// 进行签名的时候
url: isAndroid() ? location.href.split('#')[0] : window.entryUrl

Не по теме: кажется, у кого-то есть похожая проблема с обменом WeChat, я могу изучить это, когда у меня будет время~