>  기사  >  위챗 애플릿  >  웹페이지 인증을 통해 사용자 정보를 얻는 방법

웹페이지 인증을 통해 사용자 정보를 얻는 방법

Y2J
Y2J원래의
2017-05-11 13:02:322243검색

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

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

1 코드 받기

WeChat이 공개되었는지 확인하세요. 계정에는 인증 범위(범위 매개변수)가 있습니다(서비스 계정이 고급 인터페이스를 얻은 후 기본적으로 범위 매개변수에 snsapi_base 및 snsapi_userinfo가 포함됨). 팔로어에게 다음 페이지를 열도록 안내합니다.

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

'링크에 액세스할 수 없습니다'라는 메시지가 표시되는 경우 ", 매개변수가 잘못 입력되었는지, 범위 매개변수에 해당하는 권한 범위 권한이 있는지 확인하세요.

특별 참고 사항: 승인 작업 보안 이 높은 수준이므로 승인 요청을 시작할 때 WeChat은 주문이 승인되면 정기적으로 강력한 일치 확인을 수행합니다. 링크의 매개변수 중 No인 경우 인증 페이지에 정상적으로 접근할 수 없습니다.

그 중

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는 위와 같이 전달된 STATE 매개변수입니다.

구현 코드:

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

여기에서 access_token의 후속 획득을 위한 코드를 얻을 수 있습니다.

코드를 획득한 후 다음 링크를 요청하여 access_token을 획득하세요:

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는 사용자에게 고유하며 공식 계정도 생성됩니다.

openid는 WeChat 사용자를 고유하게 식별합니다. 사용자가 처음으로 로그인하지 않은 경우 openid를 얻은 후 이 openid에 바인드된 사용자가 데이터베이스에 있는지 쿼리하면 해당 사용자를 다시 얻을 필요가 없습니다. 데이터, 데이터베이스 user_id 설정session을 직접 가져오고, 직접 로그인합니다. 액세스하려면

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

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

데이터베이스가 그렇지 않은 경우 이 WeChat ID 사용자에게 바인딩되면 사용자의 첫 번째 방문 및 로그인과 동일하며 사용자 정보는 네 번째 단계를 통해 획득됩니다(사용자 인증, 웹 페이지 인증 범위는 snsapi_userinfo, 개발자는 이제 사용자 정보를 가져올 수 있음) access_token 및 openid를 통해) 백그라운드에서 사용자를 생성하고 이 WeChat 사용자를 바인딩합니다

(openid를 통해)

요청 방법

http: GET(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 공개 사용자 정보를 얻는 구체적인 단계입니다.

[관련 추천]

1. 위챗 공개 계정 플랫폼 소스코드 다운로드

Weizhichuang T+ 위챗 로봇 소스코드

위 내용은 웹페이지 인증을 통해 사용자 정보를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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