国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - 微信第三方登錄(原生)demo【必看篇】

微信第三方登錄(原生)demo【必看篇】

2021-05-23 18:10PHP教程網(wǎng) PHP教程

下面小編就為大家?guī)硪黄⑿诺谌降卿?原生)demo【必看篇】。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

在一家ecstore二開公司有一段時(shí)間了,公司希望往自己研發(fā)產(chǎn)品上面走,一直在培養(yǎng)新人。

最近要自己去微信登錄,自己就在ectore的框架基礎(chǔ)上,寫的原生微信第三方登錄以此來熟悉微信第三方登錄,在ecstore上面去寫。

一個(gè)簡單的demo,不是很好,分享給大家,希望能給想做微信第三方登錄的朋友帶來思路...

首先:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
資料準(zhǔn)備:
 
水印圖片 28*28  png格式 公司logo
高清圖片 108*108   png格式 公司logo
 
1.在微信開放平臺 https://open.weixin.qq.com/中填寫基本信息,
2.完成郵箱驗(yàn)證,
3.并完善開發(fā)者資料,注冊成為開發(fā)者。
4.在“賬號中心”完成開發(fā)者資質(zhì)認(rèn)證。
5.進(jìn)入微信開放平臺管理中心網(wǎng)站應(yīng)用,點(diǎn)擊“創(chuàng)建應(yīng)用”按鈕。
6.填寫基本信息,完成點(diǎn)擊下一步
7.填寫平臺信息
 應(yīng)用簽名:可在微信開發(fā)平臺的資源中心》》資源下載》》中下載“簽名生成工具”,用戶獲取已經(jīng)安裝到手機(jī)的第三方應(yīng)用的簽名。輸入應(yīng)用包名,即可獲得該應(yīng)用的簽名值。
8.提交審核后,在7個(gè)工作日內(nèi)騰訊將給出審核結(jié)果。(通常較快,幾個(gè)小時(shí)就可反饋結(jié)果)

獲取AppID,AppSecret,之后的處理:

?
1
2
需要在你想加的網(wǎng)站登錄頁給一個(gè)鏈接:<a href="https://open.weixin.qq.com/connect/qrconnect?appid=your appid &redirect_uri=http://www.sunmil.cn/passport-linshi.html&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect" rel="external nofollow" >微信登錄</a>
<br><br>

處理微信登錄開始

定義appid appsecert

?
1
2
3
private $appid = "your appid";
private $appsecert = "your appsecert";
private $redirect_uri = http://www.sunmil.cn/wxGetCode;

綁定賬號頁面

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public function weixin(){
   //鏈接數(shù)據(jù)庫
   $link = mysqli_connect(DB_HOST, DB_USER,DB_PASSWORD,DB_NAME ) or die('數(shù)據(jù)庫連接失敗4');
   $link = mysqli_connect('127.0.0.1', 'root','root', 'ec') or die('數(shù)據(jù)庫連接失敗');
   mysqli_set_charset($link,'utf8');
 
   //接收openid
   $openid = $_COOKIE['openid'];
 
   $sql = "select * from sdb_trustlogin_trustinfo where openid = '$openid' ";
   $res = mysqli_query($link, $sql);
   $row = mysqli_fetch_assoc($res);
 
   $this->pagedata['realname'] = $row['realname'];
   $this->pagedata['avatar'] = $row['avatar'];
 
   $this->page("site/passport/weixin.html");
 
 }

當(dāng)?shù)谝淮挝⑿诺卿洠幚斫壎ㄙ~號頁面

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public function handle($url=null){
    // $url = "http://www.sunmil.cn";
     //鏈接數(shù)據(jù)庫
    $link = mysqli_connect(DB_HOST, DB_USER,DB_PASSWORD,DB_NAME ) or die('數(shù)據(jù)庫連接失敗3');
      mysqli_set_charset($link,'utf8');
 
      $post = utils::_filter_input($_POST);
 
    $userData = array(
      'login_account' => $post['uname'],
      'login_password' => $post['password']
    );
 
    $member_id = kernel::single('pam_passport_site_basic')->login($userData,$post['verifycode'],$msg);
 
 
    $b2c_members_model = $this->app->model('members');
    $member_point_model = $this->app->model('member_point');
 
    $member_data = $b2c_members_model->getList( 'member_lv_id,experience,point', array('member_id'=>$member_id) );
    
    $member_data = $member_data[0];
    $member_data['order_num'] = $this->app->model('orders')->count( array('member_id'=>$member_id) );
 
    $b2c_members_model->update($member_data,array('member_id'=>$member_id));
    $this->userObject->set_member_session($member_id);
    $this->bind_member($member_id);
    $this->set_cookie('loginName',$post['uname'],time()+31536000);//用于記住密碼
    // setCartNum()需要傳入一個(gè)參數(shù)
    $aCart = array();
    $this->app->model('cart_objects')->setCartNum($aCart);
    $url = $this->userPassport->get_next_page('pc');
    if( !$url ){
      $url = kernel::single('b2c_frontpage')->gen_url(array('app'=>'b2c','ctl'=>'site_member','act'=>'index'));
    }
 
    //查詢數(shù)據(jù)庫
    $uname = $_POST['uname'];
    $sql = "select * from sdb_pam_members where password_account = '$uname' ";
    $res = mysqli_query($link, $sql);
    $row = mysqli_fetch_assoc($res);
    $member_id = $row['member_id'];
    //鏈接數(shù)據(jù)庫,插入數(shù)據(jù)
    $openid = $_COOKIE['openid'];
    $sql = "update sdb_trustlogin_trustinfo set member_id = ('{$member_id}') where openid = '{$openid}'";
    $res = mysqli_query($link, $sql);
 
    if($res && mysqli_affected_rows($link) > 0){
      //刪除cookie
      setcookie("openid", $openid, time()-3600);
      kernel::single('pam_lock')->flush_lock($member_id);
      $this->splash('success',$url,app::get('b2c')->_('登錄成功'),true);
    }else{
      echo '失敗了';
    }
  }

處理綁定注冊頁面

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function weixin1(){
     //鏈接數(shù)據(jù)庫
    $link = mysqli_connect(DB_HOST, DB_USER,DB_PASSWORD,DB_NAME ) or die('數(shù)據(jù)庫連接失敗2');
    mysqli_set_charset($link,'utf8');
 
    //接收openid
    $openid = $_COOKIE['openid'];
 
    $sql = "select * from sdb_trustlogin_trustinfo where openid = '$openid' ";
    $res = mysqli_query($link, $sql);
    $row = mysqli_fetch_assoc($res);
 
    $this->pagedata['realname'] = $row['realname'];
    $this->pagedata['avatar'] = $row['avatar'];
    $this->page("site/passport/weixin1.html");
 
  }

綁定注冊頁面

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public function handle1($url=null){
    //鏈接數(shù)據(jù)庫
    $link = mysqli_connect(DB_HOST, DB_USER,DB_PASSWORD,DB_NAME ) or die('數(shù)據(jù)庫連接失敗1');
    mysqli_set_charset($link,'utf8');
 
    $_POST = utils::_filter_input($_POST);
    
    $saveData = $this->userPassport->pre_signup_process($_POST);
 
    if( $member_id = $this->userPassport->save_members($saveData,$msg) ){
      $this->userObject->set_member_session($member_id);
      $this->bind_member($member_id);
      foreach(kernel::servicelist('b2c_save_post_om') as $object) {
        $object->set_arr($member_id, 'member');
        $refer_url = $object->get_arr($member_id, 'member');
      }
 
      /*注冊完成后做某些操作! begin*/
      foreach(kernel::servicelist('b2c_register_after') as $object) {
        $object->registerActive($member_id);
      }
      /*end*/
      $data['member_id'] = $member_id;
      $data['uname'] = $saveData['pam_account']['login_account'];
      $data['passwd'] = $_POST['pam_account']['psw_confirm'];
      $data['email'] = $_POST['contact']['email'];
      $data['refer_url'] = $refer_url ? $refer_url : '';
      $data['is_frontend'] = true;
      $obj_account=$this->app->model('member_account');
      $obj_account->fireEvent('register',$data,$member_id);
      if(!strpos($_SESSION['pc_next_page'],'cart')){
        $url = $this->gen_url(array('app'=>'b2c','ctl'=>'site_passport','act'=>'sign_tips'));
      }else{
        $url = $_SESSION['pc_next_page'];
      }
 
      //會員注冊成功,處理member_id 開始
      $login_name = $_POST["pam_account"]["login_name"];
      $sql = "select member_id from sdb_pam_members where password_account = '{$login_name}'";
      // echo $sql;
      $res = mysqli_query($link, $sql);
      $row = mysqli_fetch_assoc($res);
      $member_id = $row['member_id'];
 
      //鏈接數(shù)據(jù)庫,插入數(shù)據(jù)
      $openid = $_COOKIE['openid'];
      $sql = "update sdb_trustlogin_trustinfo set member_id = ('{$member_id}') where openid = '{$openid}'";
      $res = mysqli_query($link, $sql);
 
      if($res && mysqli_affected_rows($link) > 0){
 
         //刪除cookie
        setcookie("openid", $openid, time()-3600);
        $this->splash('success',$url,app::get('b2c')->_('注冊成功'),$ajax_request);
        }  
    //會員注冊成功,處理member_id 結(jié)束
      $this->splash('failed',$back_url,app::get('b2c')->_('注冊失敗'),$ajax_request);
    }
  }

臨時(shí)頁面

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public function linshi(){
 
    $code = $_GET['code'];
    $state = $_GET['state'];
 
    if($state === 'STATE'){
      $this->loginWeixin($code);
    }elseif($state === 'wxBind'){
      $this->bindWeixin($code);
    }else{
      return redirect("http://www.sunmil.cn");
    }
  }

loginWeixin

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
private function loginWeixin($code){
 
    //鏈接數(shù)據(jù)庫
    $link = mysqli_connect('127.0.0.1', 'root','root', 'ec') or die('數(shù)據(jù)庫連接失敗');
    mysqli_set_charset($link,'utf8');
 
    $appid = $this->appid;
    $appsecert = $this->appsecert;
    $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecert."&code=".$code."&grant_type=authorization_code";
 
    //curl模擬get請求,獲取結(jié)果
    $res = $this->http_curl($url);
    //轉(zhuǎn)化為數(shù)組
    $result = json_decode($res,true);
    $openid = $result['openid'];
 
    //openid存在,直接登錄,openid不存在,先注冊再登錄
    $sql = "select openid from sdb_trustlogin_trustinfo";
    $res = mysqli_query($link, $sql);
    $row = mysqli_fetch_all($res);
      
    //foreach 判斷
    foreach ($row As $v) {
      if(in_array($openid,$v,true)){
        //缺少登錄信息
 
        $sql = "select member_id from sdb_trustlogin_trustinfo where openid = '{$openid}'";
        //查出member_id
        $res = mysqli_query($link, $sql);
        $row = mysqli_fetch_assoc($res);
 
        $member_id = $row['member_id'];
        //查出會員信息
        $sql = "select * from sdb_pam_members where member_id = '{$member_id}'";
        $res = mysqli_query($link, $sql);
        $row = mysqli_fetch_assoc($res);
 
        $login_name = $row['login_account'];
 
        //存入cookie
        setcookie('UNAME',$login_name, time()+360000);
        echo "<script>window.location.href='http://www.sunmil.cn'</script>";
        exit;
      }
    }
 
    $access_token = $result['access_token'];
    //獲取用戶基本信息
    $getInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
    $userInfo = $this->http_curl($getInfoUrl);
    $trustinfo = json_decode($userInfo);
 
    //判斷trustinfo表里面是否存在該條數(shù)據(jù)
    $openid   =  $trustinfo->openid;
    $nickname  =  $trustinfo->nickname;
    $sex    =  $trustinfo->sex;
    $city    =  $trustinfo->city;
    $province  =  $trustinfo->province;
    $country  =  $trustinfo->country;
    $avatar   =  $trustinfo->headimgurl;
    $trust_source = 'trustlogin_plugin_weixin';
    //連接數(shù)據(jù)庫,插入數(shù)據(jù)
    $sql = "insert into sdb_trustlogin_trustinfo (openid,realname,avatar,gender,province,city,trust_source) values ('{$openid}','{$nickname}','{$avatar}','{$sex}','{$province}','{$city}','{$trust_source}')";
    $res = mysqli_query($link, $sql);
 
    if($res && mysqli_affected_rows($link) > 0){
       //存入cookie
      setcookie('openid',$openid, time()+3600);
      header("Location:http://www.sunmil.cn/passport-weixin.html");
    }else{
      echo '失敗了';
    
  }

curl模擬get請求

?
1
2
3
4
5
6
7
8
9
10
11
12
private function http_curl($url){
    $curlobj = curl_init();
    curl_setopt($curlobj, CURLOPT_URL, $url);
    curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlobj, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curlobj, CURLOPT_SSL_VERIFYHOST, FALSE);
 
    $output = curl_exec($curlobj);
    curl_close($curlobj);
 
    return $output;
  }

處理微信登錄結(jié)束

就可以實(shí)現(xiàn)微信登錄了,當(dāng)然了,一個(gè)簡單熟悉微信第三登錄的demo,有機(jī)會用tp框架分裝完善一個(gè)完整的微信第三方登錄。

歡迎留言,大家一起討論。

以上這篇微信第三方登錄(原生)demo【必看篇】就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 一区二区三区四区av | 欧美日韩在线观看视频 | 九九综合 | 精品九九 | 亚洲www视频 | 日韩一区二区在线视频 | 999国内精品永久免费视频 | 中文字幕一区在线观看视频 | 肌肉男gay网站| 中日韩一线二线三线视频 | 国产视频一二区 | 亚洲国产中文在线观看 | 亚洲精品视频在线 | 一区二区久久 | 免费在线黄色电影 | 久久久久久亚洲精品 | 日本久草 | 精品欧美一区二区三区久久久 | 国产综合精品 | 精品久久久久久久久久久 | 91精品啪aⅴ在线观看国产 | 亚洲国产综合在线观看 | 国内精品视频 | 国产高潮国产高潮久久久91 | 一区二区在线 | 性做久久久久久 | 日韩一二三区视频 | 亚洲日本va在线观看 | 黄色在线网站 | 欧美日日| 成人国产精品视频 | 国产日韩一级片 | 久色成人| 亚洲精彩视频 | 黄色美女网站视频 | 欧美一区二区三区免费 | 国产美女自拍视频 | 亚洲视频区 | 亚洲精品欧美精品 | 久热免费在线观看 | 欧美成人精品一区二区三区 |