위 챗 공유 invalid signature 서명 오류 밟 은 구덩이

얼마 전에 위 챗 으로 공유 하 는 것 을 만 들 었 고 전단 프레임 워 크 는 VUE 를 사 용 했 습 니 다.이 물건 에 미 치 겠 습 니 다.목록 페이지 하나,상세 페이지 하나,상세 페이지 를 공유 할 때 잘못 보고 합 니 다invalid signature서명 오류 가 발생 했 습 니 다.
그 때 는 침착 하지 못 하고 구덩이 길 을 걷 기 시 작 했 습 니 다.홈 페이지 의 각종 검사 오류 문제 에 따라 차이 점 을 발견 하지 못 했 습 니 다.
다음 순서대로 검사 하 는 것 을 권장 합 니 다.
1.서명 알고리즘 이 정확 한 지 확인 하고 사용 가능http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 페이지 도구 가 검 사 를 진행 합 니 다.
2.config 에서 nonceStr(js 에서 낙타 봉 표준 대문자 S)를 확인 하고 timestamp 는 서명 에 대응 하 는 noncestr,timestamp 와 일치 합 니 다.
3.url 이 페이지 의 완전한 url 임 을 확인 합 니 다(현재 페이지alert(location.href.split('#')[0]).'http(s):/'부분,그리고'?'을 포함 합 니 다.뒤의 GET 매개 변수 부분 은'\#'hash 뒤의 부분 은 포함 되 지 않 습 니 다.
4.config 의 appid 가 가 져 오기 jsapi_ticket 의 appid 와 일치 하 는 지 확인 합 니 다.
5.일정 캐 시 access 확보token 과 jsapiticket。
6.서명 할 url 을 동적 으로 가 져 오 는 지 확인 하 십시오.동적 페이지 는 인 스 턴 스 코드 에서 phop 의 실현 방식 을 참조 할 수 있 습 니 다.html 의 정적 페이지 가 전단 에서 ajax 를 통 해 url 을 배경 으로 서명 해 야 한다 면 전단 은 js 로 현재 페이지 를 가 져 와'\#'hash 부분의 링크location.href.split('#')[0]를 제거 하고 encodeURIComponent 가 필요 합 니 다.페이지 가 공유 되면 위 챗 클 라 이언 트 는 링크 끝 에 다른 파 라 메 터 를 추가 합 니 다.현재 링크 를 동적 으로 가 져 오지 않 으 면...공 유 된 페이지 서명 이 실 패 했 습 니 다.
도대체 무슨 원인 일 까요?나중에 history 가 위 챗 에 있 는 문제 라 는 것 을 알 게 되 었 습 니 다.바로 목록 에서 상세 한 페이지 로 들 어 갈 때 뒤로 URL 을 보 내 는 것 입 니 다.상세 한 페이지 에서 들 어 오 는 URL 과 일치 하지 않 습 니 다.예 를 들 어 A=>B,공유 B
이 럴 때 초기 페이지 의 url 을 기록 해 야 합 니 다.해결 방법 은 main.js 에 추가 합 니 다.

router.beforeEach((to, from, next) => {
 if (!window.initUrl) {
 window.initUrl = location.href.split('#')[0]
 }
 next()
})
그리고 당신 의 상세 페이지 에서 B 를 가 져 옵 니 다.
url: '....?url=' + encodeURIComponent(that.isIosOrAndroid() === 'android' ? location.href.split('#')[0] : window.initUrl)
여기 서 안 드 로 이 드 인지 ios 인지 판단 해 야 합 니 다.안 드 로 이 드 에 표시 되 는 것 이 정상 이기 때문에 사용 합 니 다.

location.href.split('#')[0]
현재 url 을 직접 가 져 오 면 됩 니 다.

//   ios  android
 Vue.prototype.isIosOrAndroid = function () {
 let u = navigator.userAgent;
 let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1 // android  
 let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios  
 let isStr = ''
 if (isAndroid) {
 isStr = 'android'
 }
 if (isiOS) {
 isStr = 'ios'
 }
 return isStr
 }
총결산
위 챗 에서 invalid signature 서명 오류 로 밟 은 구 덩이 를 공유 하 는 글 을 소개 합 니 다.더 많은 위 챗 에서 invalid signature 서명 오류 내용 을 공유 합 니 다.예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 관심 부탁드립니다!

좋은 웹페이지 즐겨찾기