저는 현재 WeChat 애플릿 개발 프로젝트를 진행하고 있습니다. 시나리오 레이아웃: 동일한 WeChat 오픈 플랫폼에서 동일한 주제를 가진 앱과 WeChat 미니 프로그램은 동일한 비즈니스를 완료합니다. 사용자가 앱이나 WeChat 미니 프로그램에 들어갈 때 사용자의 유니온 아이디를 얻어 현재 사용자 신원을 확인하고 로그인을 완료해야 합니다. 미니 프로그램의 "사용자 정보 가져오기" API(getUserInfo)의 호출 방법이 이전에 비해 크게 업데이트되었습니다. 사용자 인증 및 로그인을 우아하게 구현하는 것이 매우 중요합니다. 다음은 WeChat 미니 프로그램 인증 로그인 프로세스를 구현한 것입니다. 개발 아이디어와 요약은 아래에 공유되어 있습니다.
지침:
애플릿은 wx.login()을 호출하여 임시 로그인 자격 증명 코드를 얻고 이를 개발자 서버에 반환합니다.
개발자 서버 코드 사용자의 고유 식별자 openid 및 세션 키 session_key를 교환합니다.
임시 로그인 인증번호는 한 번만 사용할 수 있습니다
팔로워가 공식 계정과 상호 작용한 후 공식 계정에서 팔로워의 OpenID(암호화된 WeChat ID, 각 사용자의 OpenID)를 얻을 수 있습니다. 각 공식 계정마다 고유합니다. 동일한 사용자의 openid는 공식 계정마다 다릅니다. ——WeChat 공개 플랫폼 개발자 문서
일반 사용자의 식별은 현재 공식 계정에만 고유합니다
공식 계정마다, 동일한 사용자라도 오픈 ID가 다릅니다
간단히
openid = hash(uid + app_id)로 이해하면 됩니다.
개발자가 여러 개의 모바일 애플리케이션, 웹사이트 애플리케이션, 공개 계정(미니 프로그램 포함)을 보유하고 있는 경우, 동일한 위챗 하에 모바일 애플리케이션, 웹사이트 애플리케이션, 공개 계정이 존재하는 한 사용자는 유니온ID로 고유하게 구별될 수 있습니다. 오픈 플랫폼 계정, 공개 계정(미니 프로그램 포함)의 경우 사용자의 유니온 ID는 고유합니다. 즉, 동일한 사용자의 경우 동일한 WeChat 오픈 플랫폼의 다양한 애플리케이션에 대해 Unionid가 동일합니다. UnionID 메커니즘 설명
개발자가 여러 모바일 애플리케이션, 웹사이트 애플리케이션 및 공용 계정 간의 사용자 계정을 통합해야 하는 경우 WeChat 개방형 플랫폼(open.weixin.qq.com)으로 이동하여 공용 계정을 사용해야 합니다. 위의 요구 사항을 충족하는 UnionID 메커니즘입니다.
하나의 WeChat 오픈 플랫폼 계정 아래에 여러 개의 모바일 애플리케이션, 웹사이트 애플리케이션, 공개 계정 및 미니 프로그램을 보유할 수 있습니다
동일한 모바일 애플리케이션, 웹사이트 애플리케이션 및 공개 계정(미니 프로그램 포함)인 한 WeChat 오픈 플랫폼 계정 프로그램) 사용자의 Unionid는 고유합니다.
개방형 플랫폼의 사용자 고유 식별자
간단히 다음과 같이 이해할 수 있습니다.
unionid = hash(uid + 开放平台id)
요약하자면
WeChat은 다양한 애플리케이션의 다양한 사용자에 대해 고유한 openId를 가지고 있지만 사용자가 동일한 사용자는 Unionid로 구별되어야 합니다. 일반적으로 자신의 백엔드에는 자체 사용자 테이블이 있으며 각 사용자는 서로 다른 사용자 ID를 갖습니다. 즉, 동일한 WeChat 오픈 플랫폼 하에서 동일한 사용자의 동일한 주제에 대한 애플리케이션은 동일한 사용자 ID, Unionid 및 다른 openid에 해당합니다. 따라서 사용자가 로그인할 때 WeChat에서 반환한 Unionid만 사용하여 동일한 사용자인지 확인한 다음 이를 사용자 테이블과 연결하여 해당 사용자 ID를 얻을 수 있습니다.
개발자 계정에 연결된 미니 프로그램은 다음 세 가지 방법을 통해 UnionID를 얻을 수 있습니다.
wx.getUserInfo 인터페이스를 호출하여 해독된 데이터에서 UnionID를 가져옵니다. 이 인터페이스에는 사용자 인증이 필요합니다. 개발자는 사용자가 인증을 거부한 후 상황을 적절하게 처리해야 합니다.
개발자 계정 아래에 동일한 주제의 공개 계정이 있고, 해당 사용자가 이미 해당 공개 계정을 팔로우한 경우. 개발자는 사용자의 다시 인증 없이 wx.login을 통해 직접 사용자의 UnionID를 얻을 수 있습니다.
개발자 계정 하에 동일 법인의 공식 계정이나 모바일 앱이 있고, 해당 사용자가 공식 계정이나 모바일 앱에 로그인할 수 있는 권한이 있는 경우. 개발자는 사용자에게 다시 인증을 요구하지 않고 wx.login을 통해 직접 사용자의 UnionID를 얻을 수도 있습니다.
사용자가 조건 2와 3을 충족하면 개발자는 wx.login을 통해 사용자의 Unionid를 직접 얻을 수 있습니다. 그렇지 않으면 인터페이스를 호출해야 합니다wx.getUserInfo
추가로 주의할 점은 다음과 같은 상황을 적절하게 처리하는 것입니다. 사용자가 승인을 거부합니다.
wx.login에 전화하여 코드를 받으세요.
wx.getSetting을 사용하여 사용자의 인증 상태를 가져옵니다.
사용자가 인증된 경우 wx.getUserInfo API를 직접 호출하여 사용자의 최신 정보를 가져옵니다.
사용자가 인증되지 않은 경우 인터페이스에 버튼 프롬프트가 표시됩니다. 사용자가 로그인하고, 사용자가 클릭하고 인증하면 사용자의 최신 정보를 얻습니다.
획득한 사용자 데이터를 wx.login에서 반환된 코드와 함께 백엔드에 전달합니다.
실제 비즈니스 시나리오에서는 사용자가 미니 프로그램에 들어갈 때 로그인 없이 정상적으로 제품을 검색할 수 있으며 미니 프로그램에 대한 기본적인 이해가 있어야 합니다. 사용자에게 인증을 요청하는 상자를 직접 팝업하지 마십시오. 그렇지 않으면 사용자가 사용해야 할 때 방해가 되고 사용자를 잃게 됩니다. 일부 고급 기능 및 시나리오는 다음과 같은 경우에 사용자에게 인증을 요청하면 사용자 인증 가능성이 크게 높아집니다.
아약스로 로그인 로직을 캡슐화하세요
프로세스:
캡슐화의 의미
더 이상 현재 인터페이스에 로그인이 필요한지, 사용자가 승인되었는지, 모든 요청이 직접 호출되는지, 모든 로그인에 신경쓰지 마세요ajax()
필요한 경우 인증 프로세스가 완료됩니다. 사업 확장시에는 사업 구현에만 집중하시면 됩니다.
미니 프로그램 •소소한 이야기(4) - 사용자 정보 얻기
사용자 기본 정보 얻기(UnionID 메커니즘)
UnionID 메커니즘 설명
관련 추천:
위 내용은 WeChat Mini 프로그램 인증 로그인 프로세스 타이밍 - 자세한 그래픽 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!