> 백엔드 개발 > PHP 튜토리얼 > PHP에서 WeChat 코드 스캐닝의 자동 로그인 및 등록 기능을 구현하는 방법

PHP에서 WeChat 코드 스캐닝의 자동 로그인 및 등록 기능을 구현하는 방법

墨辰丷
풀어 주다: 2023-03-28 21:54:02
원래의
1828명이 탐색했습니다.

이 글에서는 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 쪽에서 점프

Get UnionID 방법

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 &#39;<h1>错误:</h1>&#39;.$token->errcode;
echo &#39;<br/><h2>错误信息:</h2>&#39;.$token->errmsg;
exit;
}
$access_token_url = &#39;https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=&#39;.$appid.&#39;&grant_type=refresh_token&refresh_token=&#39;.$token->refresh_token;
//转成对象
$access_token = json_decode($this->https_request($access_token_url));
if (isset($access_token->errcode)) {
echo &#39;<h1>错误:</h1>&#39;.$access_token->errcode;
echo &#39;<br/><h2>错误信息:</h2>&#39;.$access_token->errmsg;
exit;
}
$user_info_url = &#39;https://api.weixin.qq.com/sns/userinfo?access_token=&#39;.$access_token->access_token.&#39;&openid=&#39;.$access_token->openid.&#39;&lang=zh_CN&#39;;
//转成对象
$user_info = json_decode($this->https_request($user_info_url));
if (isset($user_info->errcode)) {
echo &#39;<h1>错误:</h1>&#39;.$user_info->errcode;
echo &#39;<br/><h2>错误信息:</h2>&#39;.$user_info->errmsg;
exit;
}
//打印用户信息
// echo &#39;<pre class="brush:php;toolbar:false">&#39;;
// print_r($user_info);
// echo &#39;
'; //获取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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿