>  기사  >  위챗 애플릿  >  WeChat 공개계정-사용자 정보 획득(웹페이지 권한 획득) 구현 단계

WeChat 공개계정-사용자 정보 획득(웹페이지 권한 획득) 구현 단계

伊谢尔伦
伊谢尔伦원래의
2016-11-21 15:49:393051검색

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

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

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

1 코드 가져오기

WeChat 공개 계정에 인증 범위(범위 매개변수)가 있는지 확인하는 전제하에(서비스 계정이 고급 인터페이스를 획득한 후 기본적으로 범위 매개변수에 snsapi_base 및 snsapi_userinfo가 포함됨) 추종자를 안내합니다. 다음 페이지를 열려면:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

"링크에 접근할 수 없습니다."라는 메시지가 나타나면 매개변수가 잘못 입력되었는지, 범위 매개변수에 해당하는 권한 범위 권한이 있는지 확인하세요.

특별 참고 사항: 승인 작업의 보안 수준이 높기 때문에 WeChat은 승인 요청을 시작할 때 링크의 매개변수가 다음과 같은 경우 승인 링크에 대해 정기적으로 강력한 일치 확인을 수행합니다. 주문이 잘못되면 인증 페이지에 일반 액세스가 불가능합니다

그 중:

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

2 그리고 웹페이지 인증 access_token 코드를 교환합니다

사용자가 인증에 동의하면 페이지가 리디렉션_uri/?code =CODE&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을 획득하세요:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret= SECRET&code=CODE&grant_type =authorization_code

appid - 공식 계정의 고유 식별자
secret - key
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에 바인딩된 사용자가 있습니다. 그 후에는 사용자 데이터를 다시 얻을 필요가 없으며 데이터베이스 user_id를 직접 가져옵니다.

3 무시 세 번째 단계로 필요한 경우에만 access_token을 다시 얻습니다.

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

데이터베이스가 이 WeChat ID 사용자에게 바인딩되지 않은 경우에는 동일합니다. 사용자의 첫 방문 및 로그인까지 4단계를 통해 사용자 정보를 얻은 후(사용자 인증의 경우 웹페이지 인증 범위는 snsapi_userinfo이며 개발자는 access_token 및 openid pull 사용자 정보를 전달할 수 있음) 사용자를 생성합니다. 백그라운드에서 이 WeChat 사용자를 바인딩합니다

(openid를 통해)

요청 방법

http: GET(https 프로토콜을 사용하세요) https:/ /api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

access_token - 위에서 얻은 access_token
openid - 공개 계정의 고유 식별자

구현 코드:

<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>

위는 WeChat 공개 계정이 사용자 정보를 얻기 위한 구체적인 단계입니다.

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