欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP版微信第三方實(shí)現(xiàn)一鍵登錄及獲取用戶信息的方法

 更新時(shí)間:2016年10月14日 09:54:56   作者:kp878  
這篇文章主要介紹了PHP版微信第三方實(shí)現(xiàn)一鍵登錄及獲取用戶信息的方法,較為詳細(xì)的分析了微信第三方登陸的相關(guān)注意事項(xiàng)與實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了PHP版微信第三方實(shí)現(xiàn)一鍵登錄及獲取用戶信息的方法。分享給大家供大家參考,具體如下:

注意,要使用微信在第三方網(wǎng)頁(yè)登錄是需要“服務(wù)號(hào)”才可以哦,所以必須到官方申請(qǐng)。

一開(kāi)始你需要進(jìn)入微信公眾平臺(tái)開(kāi)啟開(kāi)發(fā)模式,并且填寫oauth2的回調(diào)地址,地址填寫你項(xiàng)目的域名就可以了.比如:www.baidu.com或zhidao.baidu.com.如果你的項(xiàng)目在二級(jí)域名就寫二級(jí)域名

前端url授權(quán)地址,在url中填寫appid與你項(xiàng)目中方法中的oauth的地址,具體在下面的代碼中可以看到.

復(fù)制代碼 代碼如下:
<a >授權(quán)</a>

再說(shuō)后臺(tái)邏輯,首先調(diào)用微信接口的SDK.(后面會(huì)有)

include('./Card/Common/class_weixin_adv.php');

之后填入微信官方給的的appid與secret

$weixin=new class_weixin_adv("appid", "secret");

初始化SDK的類,取到code,利用獲取到的code在獲取出openid 看下面代碼注釋!

$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=".$_GET['code']."&grant_type=authorization_code";
$res = $weixin->https_request($url);//調(diào)用SDK方法獲取到res 從中可以得到openid
$res=(json_decode($res, true));//轉(zhuǎn)換成array 方便調(diào)用openid

繼續(xù)調(diào)用SDK方法,獲取到用戶信息.此時(shí)$row已經(jīng)獲得用戶信息了 可以var_dump下看看鍵值方便存入數(shù)據(jù)庫(kù)

$row=$weixin->get_user_info($res['openid']);

獲取用戶信息就大功告成了,但這還不夠.我們需要的是無(wú)需注冊(cè)!所以需要利用openid,openid屬于唯一憑證,每個(gè)用戶對(duì)不同的公眾號(hào)都有不同的openid.可以理解成用戶賬號(hào)的感覺(jué).我這里用的是把openid存入cookie的解決方案,類似用戶登陸的感覺(jué),一些關(guān)鍵數(shù)據(jù)驗(yàn)證只需要與數(shù)據(jù)庫(kù)中的openid進(jìn)行對(duì)比.其他的一些利用方法可以發(fā)揮大家的想象!可以跟我留言交流!

關(guān)于之前的a鏈接的授權(quán),大家也可以判斷cookie是否存在openid,從而讓未授權(quán)用戶直接跳轉(zhuǎn)到該地址,省卻了用戶的一步操作.

下面是完整邏輯代碼,大家可以參考下!

public function oauth2(){
 include('./Card/Common/class_weixin_adv.php');
  $weixin=new class_weixin_adv("appid", "secret");
  if (isset($_GET['code'])){
    $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=".$_GET['code']."&grant_type=authorization_code";
    $res = $weixin->https_request($url);
    $res=(json_decode($res, true));
    $row=$weixin->get_user_info($res['openid']);
    if ($row['openid']) {
      //這里寫上邏輯,存入cookie,數(shù)據(jù)庫(kù)等操作
      cookie('weixin',$row['openid'],25920);
    }else{
      $this->error('授權(quán)出錯(cuò),請(qǐng)重新授權(quán)!');
    }
  }else{
    echo "NO CODE";
  }
  $this->display();
}

SDK代碼:微信官方有手冊(cè),我就不多講了,自己研究,很簡(jiǎn)單的!

<?php
/**
 * 微信SDK
 * pan041ymail@gmail.com
 */
class class_weixin_adv
{
  var $appid = "";
  var $appsecret = "";
  //構(gòu)造函數(shù),獲取Access Token
  public function __construct($appid = NULL, $appsecret = NULL)
  {
    if($appid){
      $this->appid = $appid;
    }
    if($appsecret){
      $this->appsecret = $appsecret;
    }
    $this->lasttime = 1395049256;
    $this->access_token = "nRZvVpDU7LxcSi7GnG2LrUcmKbAECzRf0NyDBwKlng4nMPf88d34pkzdNcvhqm4clidLGAS18cN1RTSK60p49zIZY4aO13sF-eqsCs0xjlbad-lKVskk8T7gALQ5dIrgXbQQ_TAesSasjJ210vIqTQ";
    if (time() > ($this->lasttime + 7200)){
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
      $res = $this->https_request($url);
      $result = json_decode($res, true);
      $this->access_token = $result["access_token"];
      $this->lasttime = time();
    }
  }
//獲取用戶基本信息
  public function get_user_info($openid)
  {
    $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->access_token."&openid=".$openid."&lang=zh_CN";
    $res = $this->https_request($url);
    return json_decode($res, true);
  }
//https請(qǐng)求
  public function https_request($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;
  }
}

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP微信開(kāi)發(fā)技巧匯總》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語(yǔ)法入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • adodb與adodb_lite之比較

    adodb與adodb_lite之比較

    這篇文章主要介紹了adodb與adodb_lite之比較
    2006-12-12
  • php中關(guān)于hook鉤子函數(shù)底層理解

    php中關(guān)于hook鉤子函數(shù)底層理解

    對(duì)"鉤子"這個(gè)概念其實(shí)不熟悉,最近看到一個(gè)php框架中用到這種機(jī)制來(lái)擴(kuò)展項(xiàng)目,所以大概來(lái)了解下。 所謂Hook機(jī)制,是從Windows編程中流行開(kāi)的一種技術(shù)
    2023-01-01
  • php重定向的三種方法分享

    php重定向的三種方法分享

    個(gè)人更傾向于header的方法,這樣頁(yè)面的跳轉(zhuǎn)速度更快點(diǎn),用戶從視覺(jué)上不易察覺(jué)整頁(yè)的跳轉(zhuǎn),而只是局部的變化
    2012-02-02
  • ThinkPHP、Zend?Framework2、Yaf、Laravel框架路由大比拼

    ThinkPHP、Zend?Framework2、Yaf、Laravel框架路由大比拼

    這篇文章主要介紹了ThinkPHP、Zend?Framework2、Yaf、Laravel框架路由大比拼的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • 淺談PHP表單提交(POST&GET&URL編/解碼)

    淺談PHP表單提交(POST&GET&URL編/解碼)

    下面小編就為大家?guī)?lái)一篇淺談PHP表單提交(POST&GET&URL編/解碼)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 實(shí)現(xiàn)2級(jí)聯(lián)動(dòng)下拉菜單

    ThinkPHP使用心得分享-ThinkPHP + Ajax 實(shí)現(xiàn)2級(jí)聯(lián)動(dòng)下拉菜單

    聯(lián)動(dòng)菜單的數(shù)據(jù)存在數(shù)據(jù)庫(kù),可以隨時(shí)通過(guò)對(duì)數(shù)據(jù)庫(kù)添加刪除修改改變菜單數(shù)據(jù),而不需修改代碼,同時(shí),實(shí)現(xiàn)了2級(jí)后,也可以實(shí)現(xiàn)3級(jí),4級(jí)。。。等關(guān)聯(lián)菜單
    2014-05-05
  • 深入淺出理解PHP原理之變量賦值

    深入淺出理解PHP原理之變量賦值

    將會(huì)對(duì)變量賦值過(guò)程中,PHP內(nèi)部對(duì)數(shù)據(jù)處理的原理進(jìn)行闡述,不過(guò)在講述該原理前,需要先了解一下變量名和它的值是如何關(guān)聯(lián)起來(lái)的,這個(gè)對(duì)變量賦值的理解非常重要
    2021-09-09
  • php數(shù)據(jù)訪問(wèn)之增刪改查操作

    php數(shù)據(jù)訪問(wèn)之增刪改查操作

    這篇文章主要為大家詳細(xì)介紹了php數(shù)據(jù)訪問(wèn)之增刪改查操作的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Php Mssql操作簡(jiǎn)單封裝支持存儲(chǔ)過(guò)程

    Php Mssql操作簡(jiǎn)單封裝支持存儲(chǔ)過(guò)程

    沒(méi)有啥太多的功能,就是簡(jiǎn)單封裝,也沒(méi)有緩存,平時(shí)用ezSQL,但是ezSQL不支持存儲(chǔ)過(guò)程,所以這里封裝了存儲(chǔ)過(guò)程,因?yàn)樽约旱男枰皇亲鲆粋€(gè)標(biāo)記在這里而已。
    2009-12-12
  • php實(shí)現(xiàn)壓縮多個(gè)CSS與JS文件的方法

    php實(shí)現(xiàn)壓縮多個(gè)CSS與JS文件的方法

    這篇文章主要介紹了php實(shí)現(xiàn)壓縮多個(gè)CSS與JS文件的方法,通過(guò)兩個(gè)完整實(shí)例分別實(shí)現(xiàn)了針對(duì)css文件與js文件的壓縮,需要的朋友可以參考下
    2014-11-11

最新評(píng)論