미니 프로그램의 유니온 ID는 어떻게 얻나요?
문제 배경: WeChat 애플릿을 만들었고 모든 것이 정상이었습니다. 하지만 최종 평가판이 출시되었을 때 많은 사용자가 사용자를 바인딩할 수 없고 배경이 잘못된 매개변수로 반환되는 것을 발견했습니다. 여러 번 조사한 결과 WeChat에서 얻은 코드 요청에서 반환된 데이터에 UnionId가 포함되지 않은 것으로 나타났습니다. 즉, 인터페이스에서 반환된 매개 변수에 UnionId 매개 변수가 포함되어 있지 않은 것으로 나타났습니다.
1. UnionID 메커니즘 설명
간단히 말해서, WeChat은 서로 다른 애플리케이션의 서로 다른 사용자에 대해 고유한 openId를 가지고 있습니다. 그러나 사용자가 동일한 사용자인지 확인하려면 Unionid를 사용하여 구별해야 합니다. 일반적으로 자신의 백엔드에는 자체 사용자 테이블이 있으며 각 사용자는 서로 다른 사용자 ID를 갖습니다. 즉, 동일한 WeChat 오픈 플랫폼 하에서 동일한 사용자의 동일한 주제에 대한 애플리케이션은 동일한 사용자 ID, Unionid 및 다른 openid에 해당합니다. 따라서 사용자가 로그인할 때 WeChat에서 반환한 Unionid만 사용하여 동일한 사용자인지 확인한 다음 이를 사용자 테이블과 연결하여 해당 user_id를 얻을 수 있습니다.
참고: 다음 문장에 대한 설명: 사용자가 공식 계정을 팔로우했거나 앱 또는 공식 계정에 로그인한 경우 사용자가 미니 프로그램을 열 때 개발자는 wx.login을 통해 사용자의 UnionID를 직접 얻을 수 있습니다. . 즉, 사용자가 공식 계정을 팔로우하지 않았거나 앱에 로그인하지 않은 경우 사용자의 UnionID는 wx.login을 통해 얻을 수 없으며 UnionId는 wx.getUserInfo를 통해서만 얻을 수 있습니다. 시스템에 UnionId가 존재하지 않는 미니 프로그램 사용자는 모두 공식 계정을 팔로우하지 않았거나 앱에서 WeChat 인증을 사용하지 않은 사용자인 것으로 확인되었습니다
2. 문제 배경
정상적인 상황에서( 즉, 미니 프로그램에 로그인하기 전에 이미 팔로우한 경우(공식 계정에 로그인했거나 WeChat 로그인을 사용하여 앱에 로그인한 경우) 사용자는 다음 두 단계를 통해 웹사이트에 성공적으로 로그인할 수 있습니다. (1) wx.login 코드를 얻기 위해 (2) 코드를 통해 백엔드를 요청하고, 백엔드에서 openid, session_key 등의 정보를 교환하는 데 WeChat API가 사용되며 Unionid를 얻을 수 있습니다
또 다른 상황 (즉, 미니 프로그램에 로그인하기 전, 공식 계정을 팔로우하지도 않았고, 공식 계정에 로그인하지도 않았으며, WeChat을 사용하여 로그인하지도 않았습니다. wx.login을 통해 앱에 로그인한 경우, 다음을 통해 얻은 코드입니다. wx.login은 Unionid, openid 등의 정보와 교환될 수 없습니다.
3. 해결 방법:
미니 프로그램의 UnionId를 얻으려면 wx.getUserInfo의 UnionId를 사용해야 합니다. wx.getUserInfo는 사용자 인증이 필요합니다. 제품의 경우 사용자가 인증을 거부하는 처리 흐름을 고려해야 합니다.
wx.getUserInfo를 획득한 후 데이터를 복호화하는 방법은 공식 문서를 참조하세요.
솔루션 아이디어: 로그인 상태와 함께 wx.getUserInfo를 통해 사용자의 암호화된 데이터 cryptoData와 암호화 알고리즘의 초기 벡터 iv를 얻은 다음 encryptdata, iv 및 코드를 백엔드에 전달하고 백엔드는 수신된 암호화된 데이터를 전달합니다. iv는 사용자의 openid, Unionid 등을 해독하기 위해 코드와 이전 session_key를 사용합니다. 암호화된 데이터 암호 해독 알고리즘
관련 권장 사항: 미니 프로그램 튜토리얼
위 내용은 미니 프로그램의 Unionid를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!