ThinkPHP實現微信三方登錄

字號+ 編輯: 国内TP粉 修訂: 种花家 來源: ThinkPHP 2023-09-12 我要說兩句(0)

tp框架怎麽接微信第三方登錄接口?

小插曲就是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&state=3d6be0a4035d839573b04816624a415e#wechat_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/aQVS6rQD9yJTTHTcyb0AqLOQ3rBoyNL3CyEJleogBib53Y6xiaibZvfZ6quDApeKuPG10sCYKkDvPwkiayUj3dMXjNicOVkV73x1k/0"  //用戶的頭像  ["privilege"] => array(0) {  }  ["unionid"] => string(28) "o2VJ4xEUwd51_7F2bhisYBhF3fVk"  //unionid  app和pc信息保持一致的基準 }


閲完此文,您的感想如何?
  • 有用

    1

  • 沒用

    1

  • 開心

    1

  • 憤怒

    1

  • 可憐

    1

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • mac開發接入微信公衆號接口返回報錯 cURL error 56: SSLRead() return error -9806

  • PHP的換行符是什麽

  • pecl安裝程序時報錯Array and string offset access syntax with curly braces is no longer supported

  • 由於商家傳入的H5交易參數有誤,該筆交易暫時無法完成,請聯繫商家解決

我要說說
網上賓友點評