>  기사  >  php教程  >  WeChat 웹페이지 인증 포털 코드

WeChat 웹페이지 인증 포털 코드

WBOY
WBOY원래의
2016-09-21 13:56:151351검색

공개 계정이 없는 웹사이트에 대해 웹페이지 인증 로그인을 구현하는 것이 좋습니다
<?php <br /> // +---------------------------------- --- ----------<br> // | OneThink [ 생각만 하면 할 수 있어요 ]<br> // +---------------------------------- --- ----------<br> // | Copyright (c) 2013 http://www.onethink.cn All Rights Reserved.<br> // +---------------------------------- --- ----------<br> // | 작성자: 아트 네트워크 <br> // +---------------------------------- --- ---------- <br> 네임스페이스 HomeController;<br> ThinkController를 사용하세요.<br> /**<br> * 공개 계정 관리<br> ​*/ <br> 클래스 WebauthController는 컨트롤러 { <br>를 확장합니다. /*id 공개 계정 아이디<br> *url 점프주소<br> *범위 인증 방법 허위 자동 인증 <br> */<br> 공용 함수 인덱스(){<br>              // $map ['id'] = '114';//I ( 'id', 0, 'intval' );<br>              // $info = M ( 'member_public' )->where ( $map )->find () <br>;          $info=배열(<br>                'appid' =>                'appsecret' => ,                              );<br> <br>          $redirect_url=U('Webauth/index');//콜백 주소<br>          $code=I('get.code');<br>          $scope=I('get.scope');<br>            if(비어 있음($scope)){<br>                $scope=false;<br>           }그 외{<br>               $scope=true;<br>        }<br> If(비어 있음($code)){ <br>               $url='http://ky.xebox.cn/index.php/Index/Index/index/';//전송 주소<br> Yoauth($info['appid'],$redirect_url,$scope,$url);<br>        }<br>          $data=Yoauth_access_token($info['appid'],$info['secret'],$code) <br>          $canshu=http_build_query($data); <br> echo $URL=I('get.state').'?'.$canshu;<br>          리디렉션($URL);<br> }  <br> } <br> /***********************************WeChat 웹페이지 인증************** * **************************/<br> <br> /* 1단계: 사용자가 코드 승인 및 획득에 동의합니다. <br> $appid;//공개 계정 appid<br> $redirect_url;//인증 후 리다이렉트된 콜백 링크 주소입니다. urlencode를 이용해 링크를 처리해주세요<br> $response_type;//반환 유형, 코드를 입력해주세요<br> $scope;//애플리케이션 인증 범위, snsapi_base는 인증 페이지를 팝업하지 않고 직접 점프하여 사용자 openid만 얻을 수 있음), snsapi_userinfo (인증 페이지 팝업, openid를 통해 별명, 성별, 위치를 얻을 수 있음) 그리고, 팔로우를 하지 않더라도 의 경우에는 사용자가 승인하면 해당 사용자의 정보도 얻을 수 있습니다. <br> $state;//리디렉션 후 상태 매개변수가 포함됩니다. 공식 계정 ID를 입력하여 사용자가 어떤 공식 계정에서 왔는지 확인할 수 있습니다<br> */ <br> 함수 Yoauth($appid,$redirect_url,$scope=true,$state='ypwl',$response_type="code"){ <br> If($범위){<br>          $scope='snsapi_userinfo';//팝업 웹페이지 승인<br> }그밖에{<br>          $scope='snsapi_base';//자동 인증<br> }<br>$map ['appid'] = $appid;<br> $map ['redirect_uri'] = $redirect_url;<br> $map ['response_type'] = $response_type;<br> $map ['범위'] = $scope;<br> $map ['상태'] = $상태;<br> $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' http_build_query ( $map ) '#wechat_redirect';<br> 리디렉션($url) <br> }<br> /* 2단계: 웹페이지 인증 access_token 코드를 교환하고 사용자 정보를 획득하여 이후 단계 생략<br> 참고: 이 단계가 자동 모드에서 수행되면 완료되고 사용자의 openid가 직접 반환됩니다. snsapi_base 스타일 웹 페이지 인증 프로세스는 여기서 끝납니다. <br> appid는 공식 계정의 고유 식별자입니다<br> 그 비밀은 공식계정의 앱비밀<br> 첫 번째 단계에서 얻은 코드 매개변수에 코드가 채워집니다<br> grant_type은 Authorization_code로 채워집니다 <br> */<br> 함수 Yoauth_access_token($appid,$secret,$code,$grant_type='authorization_code'){ <br> $map ['appid'] = $appid;<br> $map ['비밀'] = $비밀;<br> $map ['코드'] = $code;<br> $map ['grant_type'] = $grant_type <br> $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?'. http_build_query ( $map ) ;<br> $content = file_get_contents ( $url );<br> $content = json_decode ( $content, true );<br> If (! 비어 있음 ( $content ['errmsg'] )) {<br> 종료( $content ['errcode'].'--'.$content['errmsg'] );<br> }<br> //인증 방법 결정<br> If($content['scope'] == 'snsapi_userinfo'){<br>           $content=Yoauth_userinfo($content['access_token'],$content['openid']);//WeChat 사용자 정보 가져오기<br> }<br> $content 반환;<br> }<br> /*<br> 3단계: access_token 새로 고침(필요한 경우) <br> */<br> /* 4단계: 사용자 정보 가져오기(snsapi_userinfo 범위가 필요함) <br> Access_token 웹 페이지 인증 인터페이스 호출 인증서, 참고: 이 access_token은 기본적으로 지원되는 access_token과 다릅니다 <br> openid 사용자의 고유 식별자<br> ​​lang​ 국가 및 지역 언어 버전으로 돌아가기, zh_CN 중국어 간체, zh_TW 중국어 번체, en 영어<br> */<br> 함수 Yoauth_userinfo($access_token,$openid,$lang='zh_CN'){ <br> $map ['access_token'] = $access_token;<br> $map ['openid'] = $openid;<br> $map ['lang'] = $lang <br> $url = 'https://api.weixin.qq.com/sns/userinfo?' http_build_query ( $map );<br> $content = file_get_contents ( $url );<br> $content = json_decode ( $content, true );<br> If (! 비어 있음 ( $content ['errmsg'] )) {<br> 종료( $content ['errcode'].'--'.$content['errmsg'] );<br> }<br> $content 반환;<br> } <br> /* 사용자 openid가 사용자 정보를 가져옵니다<br> access_token은 호출 인터페이스 자격 증명입니다<br> Openid는 일반 사용자의 식별번호로 현재 공개 계정에 고유한 식별자입니다<br>Lang No 국가 및 지역으로 돌아가기 언어 버전, zh_CN 중국어 간체, zh_TW 중국어 번체, en 영어 <br> */<br> 함수 Yget_wx_userinfo($openid,$access_token,$lang='zh_CN'){<br> $map ['access_token'] = $access_token;<br> $map ['openid'] = $openid;<br> $map ['lang'] = $lang <br> $url = 'https://api.weixin.qq.com/cgi-bin/user/info?'. http_build_query ( $map );<br> $content = file_get_contents ( $url );<br> $content = json_decode ( $content, true );<br> If (! 비어 있음 ( $content ['errmsg'] )) {<br> 종료( $content ['errcode'].'--'.$content['errmsg'] );<br> }<br> $content 반환;<br> }

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.