首頁 >php教程 >php手册 >微信三方登陸

微信三方登陸

WBOY
WBOY原創
2016-09-30 09:22:531513瀏覽

ThinkPHP實現微信三方登陸
小插曲就是app做微信三方登陸是很久之前,後面又添加了PC的微信三方登陸,而文檔上說unionid是同一個帳號下不同應用統一的,但是app拿的是uid,導致pc拿的unionid始終對不上,導致浪費了一天的時間都在需找資料統一的問題,還有問題是解決了!希望朋友們做app的和pc微信三方登陸的時候一定要注意,app和pc都要拿unionid!好了下面就開始教大家怎麼整合PC的微信三方登陸了:

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&statedwet.do&response_type0 _redirect

(2)上面的連結會回傳一個code的參數,這個是換取access_token和openid值的媒介,之後呢就邏輯判斷了



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

//呼叫的是獲取使用者的個人資訊的方法

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

}



public function 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);

return $message;

}

public function httpsRequest($url,$data = null){

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

if (!empty($data)){

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

}

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($curl);

curl_close($curl);

return $output;

}

重要:

access_token和微信公眾平台使用者授權登陸不一樣,微信公眾平台的有限制一天,開放平台的沒有限制,而且必須是同時生成,不能過期,app和PC用戶的信息保持同步就都用["unionid"]這個是同一個開放平台下的不同應用["unionid"] 是唯一的,app和PC都要拿這個

得到的結果

array(10) { ["openid"] => string(28) "oD5XQwgVj1gLb3_zgjP72uDgESYk" ["nickname"] => string(6) "劉柱" //使用者的暱稱["sex"] => int(1) //性別1:男["language"] => string(5) "zh_CN" ["city"] => string(6) "南開" //區["province"] => string(7) "天津" //省["country"] => string(2) "天津" //市["headimgurl"] => string(129) "http://wx.qlogo.cn/mmopen/aQVS6rQD9yJTTHTcyb0AqLOQ3rBoyNL3CyCYEJleBibD9yJTTHTcyb0AqLOQ3rBoyNL3CyCYEJleB353C jNicOVkV73x1k/0" / /使用者的頭像["privilege"] => array(0) { } ["unionid"] => string(28) "o2VJ4xEUwd51_7F2bhisYBhF3fVk" //unionid app和pc資訊保持一致的基準}

🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn