>php教程 >php手册 >WeChat 3자 로그인

WeChat 3자 로그인

WBOY
WBOY원래의
2016-09-30 09:22:531527검색

ThinkPHP는 WeChat 3자 로그인을 구현합니다
작은 에피소드는 앱이 오래 전에 WeChat 3자 로그인을 구현했고 나중에 PC용 WeChat 3자 로그인을 추가했다는 것입니다. 문서에는 Unionid가 다른 애플리케이션에 대해 통합되어 있다고 나와 있습니다. 같은 계정으로 했는데 앱이 uid를 가져가고, PC에서 얻은 Unionid가 항상 일치하지 않아서, 데이터 통일 문제를 찾느라 하루종일 허비했고, 기타 문제들은 해결되었습니다! 앱과 PC를 만드는 친구들은 위챗 3방향 로그인에 주목해보시길 바랍니다. 앱과 PC 모두 유니온아이디가 필요합니다! 자, 이제 PC에서 3자 WeChat 로그인을 통합하는 방법을 가르쳐드리겠습니다.

1. 신청 시 기재한 정보는 고객이 메인 홈페이지 정보등록 양식 스캔본을 제공하고, 나머지는 본인이 직접 작성해야 합니다. 단, 승인된 콜백 도메인은 1차 도메인 이름으로 작성해야 합니다. ,
호출 시 recudirt_url과 일치해야 합니다.
인터페이스 호출 단계

(1):

참고로 위챗의 작은 아이콘은 a태그인 위챗 로그인 링크이고, href가 이 값입니다(공문서 1번 매장 위챗 로그인)

https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https://passport.yhd.com/wechat/callback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_re 직접

(2) 위 링크는 access_token과 openid 값을 교환하는 매개체인 코드 매개변수를 반환한 후 논리적으로 판단합니다
.


if(isset($_GET['code'])&&$_GET['state'] =='3d6be0a4035d839573b04816624a415e') {

//호출되는 메소드는 사용자의 개인정보를 획득하는 것입니다

$res = $this->message_request($code);

}



공개 함수 message_request($code){

//직접 수정하세요

$appid = "wx16a15XXXXXXXXX";

$appsecret = "fc4b2b999787cXXXXXXXXXXX";

//직접 수정하세요

$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";

$output = $this->httpsRequest($url);

$jsoninfo = json_decode($output, true);

$openid = $jsoninfo["openid"];

$access_token = $jsoninfo['access_token'];

$url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";

$output = $this->httpsRequest($url);

$message = json_decode($output,true);

$메시지 반환;

}

공개 함수 httpsRequest($url,$data = null){

$curl = 컬_init();

컬_setopt($curl, CURLOPT_URL, $url);

컬_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

컬_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

if (!empty($data)){

컬_setopt($curl, CURLOPT_POST, 1);

컬_setopt($curl, CURLOPT_POSTFIELDS, $data);

}

컬_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$output = 컬_exec($curl);

컬_닫기($curl);

$출력을 반환합니다.

}

중요:

access_token은 WeChat 공개 플랫폼 사용자 인증 로그인과 다릅니다. WeChat 공개 플랫폼은 하루 제한이 있지만, 개방형 플랫폼은 동시에 생성되어야 하며 만료될 수 없습니다. 동기화된 PC 사용자에게는 ["unionid"]가 사용됩니다. 이는 동일한 개방형 플랫폼의 다양한 애플리케이션에 대해 고유한 ["unionid"]입니다.

결과가 나왔습니다

array(10) { ["openid"] => string(28) "oD5XQwgVj1gLb3_zgjP72uDgESYk" ["nickname"] => string(6) "Liu Zhu" //사용자 별명 ["sex"] => 1) //성별 1: 남성 ["언어"] => string(5) "zh_CN" ["city"] => string(6) "Nankai" //District ["province"] => (7) "천진" //성["국가"] => string(2) "천진" //시["headimgurl"] => string(129) "http://wx.qlogo.cn / mmopen/aQVS6rQD9yJTTHTcyb0AqLOQ3rBoyNL3CyEJleogBib53Y6xiaibZvfZ6quDApeKuPG10sCYKkDvPwkiayUj3dMXjNicOVkV73x1k/0" //사용자 아바타 ["privilege"] => array(0) { } ["unionid"] => 28) "o2VJ4xEUwd51_7F2bhisYBhF3fVk" //Unionid 앱과 PC 정보는 벤치마크와 일관되게 유지됩니다.}

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