이 글에서는 WeChat 코드 스캐닝의 자동 로그인 및 등록 기능을 구현하기 위한 PHP를 주로 소개하고, PHP WeChat QR 코드 인식 인터페이스와 관련 사용 기술을 예제 형식으로 분석합니다. 도움이 필요한 친구들이 참고할 수 있습니다
WeChat 개발은 이미 프로그래머가 마스터해야 할 기본 기술입니다. 실제로 WeChat 개발을 해본 사람이라면 누구나 WeChat 인터페이스가 매우 강력하고 구현이 매우 간단하다는 것을 알고 있습니다. 여기서는 자동 WeChat 로그인 및 등록의 예를 살펴보겠습니다.
php WeChat 스캔 PC 측에서 자동 로그인 및 등록에 사용되는 인터페이스 범위는 snsapi_userinfo입니다. 하나의 WeChat 로그인은 웹 페이지 인증 로그인이고, 다른 하나는
웹 페이지 인증 로그인입니다. //mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75 .html
WeChat 공동 로그인: https://open.weixin.qq.com/cgi-bin/frame?t=home/web_tmpl&lang=zh_CN
1. 먼저 WeChat 링크에 로고를 추가하여 QR 코드를 생성하세요
예를 들어 링크는 https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid입니다. .'&redirect_uri='.$url.'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect' WeChat에 전달한 내용과 반환된 내용을 서버 간 식별자로 사용할 수 있으므로 상태에 대해 소란을 피울 수 있습니다. 그리고 WeChat 세그먼트:
public function creatqrAction(){ if($_GET['app']){ $wtoken=$_COOKIE['wtoken']; $postdata=$_SESSION['w_state']; if($wtoken){ $postdata=$wtoken; } include CONFIG_PATH . 'phpqrcode/'.'phpqrcode.php' $sh=$this->shar1(); $value="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx138697ef383a9167&redirect_uri=http://www.xxx.net/login/wcallback&response_type=code&scope=snsapi_userinfo&state=".$postdata."&connect_redirect=1#wechat_redirect"; $errorCorrectionLevel = "L"; $matrixPointSize = "5"; QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize); } }
이때 QR 코드가 생성됩니다. State는 식별자이고 phpqrcode는 기사 끝 부분에서 다운로드할 수 있으므로 콜백 주소를 http://www로 설정합니다. .xxx.net/login/wcallback
, wcallback 메소드에서 데이터를 처리하고 사용자 생성 세션을 삽입하고 로그인으로 이동하면 PC 측에서 Ajax가 서버에 요청하는 몇 초를 설정할 수 있습니다. 조정이 완료되면 WeChat 브라우저에서 창을 닫을 수 있습니다. WeChat j는 다음을 구현할 수 있습니다.
document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { WeixinJSBridge.call('closeWindow');}, false);
성공 후 WeChat 서비스 계정 팔로우 페이지로 이동할 수도 있습니다. 로그인:
header("Location: weixin://profile/gh_a5e1959f9a4e"); wcallback方法做处理登陆 $code = $_GET['code']; $state = $_GET['state']; $setting = include CONFIG_PATH . 'setting.php' $appid=$setting['weixin']['appid']; $appsecret=$setting['weixin']['appsecret']; if (emptyempty($code)) $this->showMessage('授权失败'); try{ $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code' $token = json_decode($this->https_request($token_url)); }catch(Exception $e) { print_r($e); } if (isset($token->errcode)) { echo '错误:'.$token->errcode; echo '错误信息:'.$token->errmsg; exit; } $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$token->refresh_token; //转成对象 $access_token = json_decode($this->https_request($access_token_url)); if (isset($access_token->errcode)) { echo '错误:'.$access_token->errcode; echo '错误信息:'.$access_token->errmsg; exit; } $user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN' //转成对象 $user_info = json_decode($this->https_request($user_info_url)); if (isset($user_info->errcode)) { echo '错误:'.$user_info->errcode; echo '错误信息:'.$user_info->errmsg; exit; } //打印用户信息 // echo '' // print_r($user_info); // echo ''
phpqrcode 클래스 라이브러리 다운로드는 여기서 제공되지 않습니다. Baidu에서 검색하여 다운로드할 수 있습니다
magento WeChat 스캔 코드 웹사이트 자동 로그인 예
https://open.weixin.qq.com/cgi -bin/showdocument ?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN
사후 인증 인터페이스 호출(UnionID)을 보면 콜백 주소를 입력하고 사용자가 로그인을 확인하는 것을 어렵지 않게 찾을 수 있습니다. PC 쪽에서 점프
public function wcallbackAction(){ $code = $_GET['code']; $state = $_GET['state']; $setting = include CONFIG_PATH . 'setting.php'; $appid=$setting['weixin']['appid']; $appsecret=$setting['weixin']['appsecret']; if (emptyempty($code)) $this->showMessage('授权失败'); try{ $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code'; $token = json_decode($this->https_request($token_url)); }catch(Exception $e) { print_r($e); } if (isset($token->errcode)) { echo '<h1>错误:</h1>'.$token->errcode; echo '<br/><h2>错误信息:</h2>'.$token->errmsg; exit; } $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$token->refresh_token; //转成对象 $access_token = json_decode($this->https_request($access_token_url)); if (isset($access_token->errcode)) { echo '<h1>错误:</h1>'.$access_token->errcode; echo '<br/><h2>错误信息:</h2>'.$access_token->errmsg; exit; } $user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN'; //转成对象 $user_info = json_decode($this->https_request($user_info_url)); if (isset($user_info->errcode)) { echo '<h1>错误:</h1>'.$user_info->errcode; echo '<br/><h2>错误信息:</h2>'.$user_info->errmsg; exit; } //打印用户信息 // echo '<pre class="brush:php;toolbar:false">'; // print_r($user_info); // echo ''; //获取unionid $uid=$user_info->unionid; } //用户操作处理 分为再次登录和第一次登陆 $sql="select h_user_id from dtb_user_binded as t1 left join dtb_user_weixin as t2 on t1.u_id=t2.id where t1.u_type='". User::$arrUtype['weixin_num_t']."' and t2.openid='$user_info->unionid'"; $h_user_id = Core_Db::getOne($sql); if(!emptyempty($h_user_id)){//该weixin号再次登录 }{//该weixin号第一次登录 }
요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
관련 권장 사항:
데이터 암호화 및 복호화를 구현하는 PHP 대칭 암호화 기능에 대한 자세한 설명PHP 이미지 인식 기술 원리 및 구현php PATH_SEPARATOR는 현재 서버 시스템 유형 인스턴스를 결정합니다
위 내용은 PHP에서 WeChat 코드 스캐닝의 자동 로그인 및 등록 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!