>위챗 애플릿 >위챗 개발 >WeChat 공개 계정에 대한 웹페이지 승인을 얻기 위한 구현 단계

WeChat 공개 계정에 대한 웹페이지 승인을 얻기 위한 구현 단계

PHPz
PHPz원래의
2017-04-02 16:08:222747검색

WeChat 공개 계정을 기반으로 공식 문서 개발:

사용자 정보를 얻는 단계는 다음과 같습니다.

1 1단계: 사용자는 코드 승인 및 획득에 동의합니다
2 2단계: 웹페이지 인증 access_token 코드 교환
3 3단계: access_token 새로 고침(필요한 경우)
4 4단계: 사용자 정보 가져오기(snsapi_userinfo 범위가 필요함)

1 코드 받기

WeChat 공개 계정에 인증 범위(범위 매개변수)의 권한이 있는지 확인하는 전제에서(서비스 계정은 고급 인터페이스에는 기본적으로 범위 매개변수에 snsapi_base 및 snsapi_userinfo가 있습니다.

"링크에 접근할 수 없습니다."라는 메시지가 표시되면 다음을 확인하세요. 매개변수가 잘못 입력되었으며 해당 범위 매개변수가 있는지 여부.

특별 참고 사항: 인증 작업의 높은 보안 수준으로 인해 인증 요청을 시작할 때 WeChat은 다음을 수행합니다. 인증 링크에 대한 정기적인 강력한 일치 확인 링크의 매개변수 순서가 올바르지 않으면 인증 페이지에 정상적으로 액세스할 수 없습니다.

그중

AppID - 공식 계정의 고유 식별자
REDIRECT_URI - 점프 URL
SCOPE - 값은 snsapi_base(팝업 없음 인증 페이지가 직접 점프하고 사용자의 openid만 얻을 수 있음) 또는 snsapi_userinfo(인증 페이지가 팝업되고 openid를 통해 닉네임, 성별, 위치를 얻을 수 있으며, 사용자를 팔로우하지 않더라도 사용자가 승인하면 정보를 얻을 수도 있습니다. )
STATE - 개발자가 매개변수 값을 맞춤 설정할 수 있습니다. a-zA-Z0-9

2 웹페이지 인증 access_token 코드 교환

사용자가 인증에 동의하면 페이지가 이동됩니다.redirect_uri/?code=CODE&state=STATE로 이동 .
state는 그대로 전달된 STATE 매개변수입니다.

구현 코드:

<code class="hljs php">$code = I(&#39;get.code&#39;);
if (empty($code)) {
   //todo 非微信访问
   exit(&#39;</code>&#39;);
 }else{ //授权后操作 }

여기서 나중에 access_token을 얻을 수 있습니다. 🎜>코드를 얻은 후 다음 링크를 요청하여 access_token을 얻으세요.

appid - 공식 계정의 고유 식별자

secret - 키

code - 위 코드에서 반환
grant_type - 값은 Authorization_code

구현 코드:

<code class="hljs bash">$url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);
$str = file_get_contents($url);
$str = json_decode($str, true);
$access_token = $str[&#39;access_token&#39;];</code>

여기에서 access_token은

캐시 처리

되어 TP 프레임워크를 가져오기 위한 구현 코드를 자주 획득하는 것을방지할 수 있습니다. 예:

<code class="hljs php">$access_token = S(&#39;access_token&#39;);
if (empty($access_token)) {
  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);
  $str = file_get_contents($url);
  $str = json_decode($str, true);
  $access_token = $str[&#39;access_token&#39;];
  S(&#39;access_token&#39;, $access_token, 3600);
}</code>

access_token을 얻은 후에는 openid(사용자의 고유 식별자)도 반환됩니다. 공식 WeChat 문서에서는 다음과 같이 설명합니다. 사용자의 고유 식별자는 공개 계정을 팔로우하지 않는 경우입니다. 사용자가 공식 계정의 웹페이지를 방문하면 해당 사용자와 공식 계정에 고유한 OpenID도 생성됩니다.


openid는 사용자가 처음으로 로그인하지 않은 경우 WeChat 사용자를 고유하게 식별합니다. 시간이 지나면 openid를 얻은 후 openid를 얻을 수 있습니다.

데이터베이스를 쿼리하여 이 openid에 바인딩된 사용자가 있는지 확인하면 사용자 데이터를 직접 얻을 필요가 없습니다. user_id 설정 session, 액세스하려면 직접 로그인 3 3단계 무시하고 필요할 때 access_token을 다시 얻으세요

4 사용자 정보 가져오기(범위가 필요함) snsapi_userinfo)

데이터베이스에 이 WeChat ID 사용자 바인딩이 없으면 사용자와 동일합니다. 처음 로그인할 때 사용자 정보를 얻기 위해 네 번째 단계를 거칩니다(사용자 인증의 경우). , 웹 페이지 인증 범위는 snsapi_userinfo이며 개발자는 이때 access_token 및 openid를 통해 사용자 정보를 가져올 수 있습니다. 그런 다음 백그라운드에서 사용자를 생성하고 바인딩합니다. 이 WeChat 계정

정의(openid를 통해)


요청 방법


http: GET(https 프로토콜을 사용하세요)

access_token - 위에서 얻은 access_token

openid - 공개 계정의 고유 식별자

<code class="hljs php">$url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";
   $str = file_get_contents($url);
   $str = json_decode($str, true);
   if (empty($str[&#39;errcode&#39;])) {  
   //创建user并绑定
   openid}else{  
   //错误处理}</code>

위 내용은 WeChat 공개 계정에 대한 웹페이지 승인을 얻기 위한 구현 단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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