1. 계산된 서명은 WeChat에서 제공하는 샌드박스(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
)와 일치합니다.
2. 문제를 해결하기 위해 두 가지 방법을 시도했지만 여전히 동일한 오류가 발생했습니다. 1) 로컬에서 서버로 URL을 전달하고 ajax를 통해 서버의 json 데이터를 가져온 다음 wx.config의 내용을 채웁니다. 2) 서버에서 가져옵니다. 이번 방문 링크
3. 역방향 도메인 이름 프록시로 nginx를 사용하지만 업스트림용으로 처리되었습니다
결론: WeChat의 JSSDK에 버그가 있는 것으로 의심됩니다
확인이 필요할 수도 있습니다
1) WeChat의 jsticket을 서버에 전역적으로 캐시합니까? 새 jsticket을 얻은 후 원래 jsticket(access_token 포함)이 새로 고쳐집니다
2) 쿼리 문자열 등을 포함하여 URL이 일치하는지 여부
3) nonceStr과 timestamp가 서명과 일치하는지 여부
또한 버그가 있는 것으로 의심됩니다. 잘못된 서명은 Android에서는 유효하지 않지만 iOS에서는 정확합니다. 그리고 공식 디버깅 페이지에 전달됐는데 지금은 원래 포스터가 해결됐는지 궁금하네요.
아마도
url
传入的问题,建议wx.config
은 백그라운드를 통해 생성된 다음 프런트엔드에 기록됩니다.나처럼
으아아아그럼
으아아아 으아아아원본 포스터의 문제는 해결하셨나요? 저도 같은 문제입니다. 아무튼 위챗 테스트 툴과 비교를 위해 인터페이스도 테스트해봤는데 계속 잘못된 서명이 나옵니다
서명은 공식 서명과 동일하며, URL도 location.href.split('#')[0]을 통해 얻습니다. . 또한 공용 계정의 JS 인터페이스에 대한 보안 도메인 이름도 계속해서 config:invalid 서명을 표시하지만 작동하지 않습니다. . 하나님께 도움을 구하세요,
테스트 주소: http://weixin.zhjckx.com/ApiWeiXin/JsSdk
다른 사람의 답변 보기:
/q/1010000002502269/a-1020000002549180X2X
제가 겪은 상황은 서명 생성 시 현재 URL을 얻을 때 laravel 프레임워크의 URL:full() 메서드를 사용했다는 것입니다. 결과적으로 이 메서드는 URL의 쿼리 문자열 순서를 재정렬합니다. 예를 들어 방문 시 URL은
입니다. 으아아아, URL:full()을 사용하여 얻은 결과는
으아아아정직하고 실용적인 WeChat 공식 예시로 변경:
으아아아괜찮습니다.
직접 수정해서 테스트해봤는데 괜찮네요. 그 이유는 공식 httpGet 함수를 사용할 수 없기 때문입니다.
jssdk.php에 있는 이 두 문장을 말해주세요
으아아아