원본주소 : http://hello1010.com/bind-wechat/
2차원바코드/QR코드(2차원바코드) ) 코딩 시 특정 기하학적 도형을 기본으로 하는 "0"과 "1"을 기준으로 일정한 패턴에 따라 평면(2차원 방향)에 분포된 흑백 그래픽으로 데이터 기호 정보를 기록합니다. "비트 스트림의 개념은 이진수에 해당하는 여러 기하학적 모양을 사용하여 텍스트 수치 정보를 나타내며 이미지 입력 장비 또는 광전 스캐닝 장비를 통해 자동으로 판독되어 자동 정보 처리가 이루어집니다.
최근에는 QR코드가 특히 많이 활용되고 있습니다. WeChat QR 코드 결제, WeChat QR 코드 로그인, WeChat QR 코드 명함 등을 포함하여 WeChat의 QR 코드 홍보 및 적용은 물 속의 오리와 같다고 할 수 있습니다. QR코드는 O2O에서 온라인과 오프라인을 연결하는 중요한 연결고리라고 할 수 있습니다. 샤오마 형제도 "QR코드는 온라인과 오프라인의 핵심 진입점"이라고 말했다.
요즘 많은 웹사이트가 자체적인 완전한 사용자 계정 시스템을 구축하고 있습니다. 모두를 위한 WeChat 시대에는 추세를 따르기보다는 WeChat 공개 계정을 개발하고 운영하는 것을 고려해야 합니다. , 그러나 WeChat은 좋은 O2O 솔루션을 제공하기 때문에 사용자에게 편리합니다. 더 중요한 것은 WeChat이 온화하고 지속적으로 개선되는 생태 체인을 가지고 있다는 것입니다.
사용자가 WeChat 공식 계정을 팔로우하면 상호작용 중에 사용자의 신원 정보(웹사이트의 계정 정보에 해당)를 획득해야 할 수 있습니다. ) 예를 들어 공식 계정에서 주문하고 주문 및 기타 작업을 확인합니다. 그러면 이제 질문이 생깁니다. 동일한 사용자에 대해 WeChat 공식 계정 사용자(openid)와 웹사이트 사용자(userid) 간의 대응 관계를 어떻게 설정합니까? 이 프로세스를 바인딩이라고 합니다.
논의를 단순화하기 위해 요약했습니다. 두 가지 시나리오:
1. 사용자가 당사 웹사이트 사용자로 등록했지만 아직 WeChat 공식 계정을 팔로우하지 않았습니다.
2. 등록되었지만 이미 WeChat 공식 계정을 팔로우하고 있습니다.
위의 두 가지 상황에 대해서는 아래에서 별도로 설명합니다.
시나리오 1
사용자가 웹사이트 사용자로 등록했지만 아직 WeChat 공식 계정을 팔로우하지 않았습니다. . 여기서 사용자는 먼저 웹사이트에 로그인한 후 개인 설정 등 적절한 위치에 바인딩 항목을 제공해야 합니다. 바인딩 프로세스는 다음과 같습니다.
여기에서 WeChat의 QR 코드 생성 기능이 필요합니다. 매개변수가 있는 QR 코드
WeChat QR 코드와 관련하여 공식 문서에는 다음과 같이 나와 있습니다.
현재 2가지 유형의 QR이 있습니다. 코드는 임시 QR 코드와 영구 QR 코드입니다. 전자는 최대 1800초의 만료 시간을 갖지만 더 큰 숫자를 생성할 수 있습니다. 후자는 만료 시간이 없고 더 작은 숫자를 생성할 수 있습니다(현재 매개변수는 1~100000만 지원합니다). . 두 개의 QR 코드는 각각 계정 바인딩, 사용자 소스 통계 및 기타 시나리오에 적합합니다.
분명히 우리에게는 임시 QR 코드를 사용하는 것이 더 적합합니다. 이는 사용자가 페이지를 새로 고칠 때마다 생성될 수 있습니다.
QR 코드에는 장면 값(scene_id)이 포함될 수 있으므로 사용자가 장면 값이 포함된 QR 코드를 스캔하면 WeChat 서버가 장면 값을 자체 서버에 푸시하고, 장면 값을 얻은 후에는 확인 및 바인딩 논리를 수행할 수 있습니다. 참고: QR 코드를 생성하려면 인증된 서비스 번호가 필요합니다.
완전한 바인딩 과정은 다음과 같습니다.
① 사용자가 웹 페이지에 로그인하고 클릭합니다. WeChat 계정 "바인딩";
② 백엔드는 WeChat 인터페이스를 사용하여 QR 코드 링크를 생성하고 이를 프런트 엔드 디스플레이에 반환하고 장면 값 A와 사용자 간의 대응 관계를 설정합니다.
③ 사용자는 QR 코드를 스캔하고 WeChat 공개 계정을 클릭합니다(팔로우했다면 바로 ④로 이동).
④백그라운드는 WeChat 서버에서 푸시한 장면 값 A를 받습니다.
⑤백그라운드는 해당 항목을 쿼리합니다. 장면 값 A를 기반으로 사용자 ID(2에서 설정된 해당 관계에 따라 다름)
⑥ 사용자 userid와 WeChat 사용자 openid 사이의 대응 관계를 설정합니다.
⑦ "바인딩 성공" 프롬프트를 푸시합니다. 사용자의 WeChat 클라이언트
⑧ 바인딩이 완료되었음을 첫 페이지에 알리고 페이지를 새로 고치고 일부 WeChat 계정 정보를 반환합니다. 완전한 바인딩.
그 중 ②에서 "장면값 A와 사용자 간의 대응관계를 설정한다"는 것은 사용자가 이미 로그인을 했기 때문에 사용자가 "WeChat 바인딩"을 클릭하면 account", 장면 값 A와 백그라운드의 사용자 ID 사이에 임시 관계를 할당할 수 있습니다. 사용자 수가 적은 웹사이트의 경우 PHP에서 apc를 직접 사용하여 캐시하고 만료 시간(임시 QR 코드의 만료 시간과 동일)을 설정할 수 있습니다.
8에서 http에는 푸시 메커니즘이 없기 때문에 가장 간단한 방법은 폴링하여 바인딩이 완료되었는지 확인한 다음 바인딩이 완료된 후 페이지를 새로 고치는 것입니다.
바인딩이 완료된 후 사용자가 WeChat 공식 계정에 접속하면 openid를 기반으로 해당 사용자 ID를 찾을 수 있어 신원 인식이 완료됩니다. 앞서 언급한 주문 접수 및 주문 조회가 모두 가능합니다.
전체 제본 과정이 복잡하지도 않고 구현하기 기술적으로 어렵지도 않습니다.
시나리오 2
시나리오 2, 사용자가 다음 작업을 수행해야 하기 때문에 작업이 약간 복잡합니다. WeChat 클라이언트에서 터미널 웹페이지에서 로그인/등록을 완료하세요. 따라서 등록과정이 너무 복잡하고 번거롭다면 사용하지 않는 것이 좋습니다.
프로세스:
위 바인딩 프로세스는 등록 프로세스를 통합하므로 참조하세요. 더 복잡해 보입니다. 구현은 그리 어렵지 않습니다. 계정 바인딩은 사용자의 정보 보안과 관련되므로 보안 문제에 집중하겠습니다.
1. 링크 위조를 방지하는 방법
로그인/등록 링크는 자체 서버에서 생성되어야 하며 다른 사람이 위조할 수 없습니다. 유효성은 위챗 인증 서버 주소를 참고하시면 됩니다. 따라서 상대적으로 안전한 로그인 링크는 다음과 같습니다.
http://api.hello1010.com/wechat/login.html?openid=x1&signature=x2×tamp=x3&nonce=x4&echostr&= x5
서명 확인 코드:
<code><span>private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } </span></code>
토큰 값은 WeChat 공식 계정의 배경 값과 일치할 수 있습니다. 또는 변경될 수 있습니다. 하나, 보다 안전한 곳으로 변경하는 것을 권장합니다.
2. openid가 신뢰할 수 있는지 확인하는 방법
다음 시나리오를 고려하십시오. 사용자 A가 로그인 페이지에 들어가서 로그인 링크를 browser 에서 openid를 사용자 B의 openid로 바꾸고 사용자 A의 계정과 비밀번호를 사용하여 로그인하십시오. 이는 사용자 A의 userid와 사용자 B의 openid를 함께 바인딩하며 이는 분명히 안전하지 않습니다.
예를 들어 openid를 암호화할 수 있는 방법은 많습니다. 암호화 방법을 기밀로 유지하면 사용자는 암호화된 openid를 위조할 수 없습니다. openid를 암호화하지 않으려면 링크 생성 시 서버 측에서 openid와 서명 간의 해당 관계를 설정하면 됩니다. 사용자가 openid를 변조하면 검증을 통과할 수 없습니다.
클라이언트가 보낸 정보를 절대로 믿지 마십시오.
확장 적용
제본을 완료한 후 몇 가지 간단한 적용을 만들 수 있습니다. 예를 들어 회사는 오프라인 로드쇼 이벤트를 개최해야 하며, 참가하려면 등록 및 로그인이 필요합니다.
위챗을 활용해 구현할 수 있는 대표적인 O2O 예시입니다.
그 중 "bind user 하위 프로세스"가 프로세스이다. 시나리오 2에서. 등록 상호 작용은 여기에서 설명하지 않습니다. 각 비즈니스는 다릅니다.
바인딩을 완료한 사용자는 위챗을 통해 등록한 후 QR 코드를 스캔하여 로그인하기만 하면 이벤트에 참여할 수 있습니다. 경험은 매우 원활합니다. .
궁금한 점이 있으시면 편하게 소통해주세요!
위 내용은 WeChat 계정 바인딩을 소개하며 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.