//這部峯代碼是封裝的庫文件,
<?php
/**
* Created by PhpStorm.
* User: root
* Date: 16-6-23
* Time: 下午3:29
*/ class weixinUser{ protected $m_appid;//应用唯一标识,在微信开放平台提交应用审核通过后获得
protected $m_AppSecret;//应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
function __construct($appid, $m_AppSecret){
//初始化
$this->m_appid = $appid;
$this->m_AppSecret = $m_AppSecret; }
//根據用戶授權登錄之後渠道的code得到access_token
public function get_access_token($code)
{
$access_token_url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->m_appid."&secret=".$this->m_AppSecret."&code=".$code."&grant_type=authorization_code";
$access_token = json_decode(file_get_contents($access_token_url));
if (isset($access_token->errcode)) {
$this->error($access_token->errcode, $access_token->errmsg);
return 0;
} else {
return $access_token;
} } //根據accesss_token取到用戶的個人信息
public function get_user_info($access_token, $language="zh_CN")
{
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token->{'access_token'}."&openid=".$access_token->{"openid"};
$user_info = json_decode(file_get_contents($url));
if (isset($user_info->errcode)) {
$this->error($user_info->errcode,$user_info->errmsg);
return 0;
}else{
return $user_info;
}
}
//輸出錯誤信息
public function error($errmsg, $errcode = "001")
{
echo '<h1>error:</h1>' . $errcode;
echo '<br/><h2>error information:</h2>' . $errmsg;
} }

微信登錄(網頁授權)之後的獲取用戶的信息需要三步:

第一步:詳見網頁微信授權(我的博客微信開發分類中);

第二步:獲取access_token;

第三步:獲取用戶的個人信息;

下面是對上面函數的調用:

<?php
include_once "WeixinUser.php";
$code = $_GET['code'];
//换成自己的接口信息, 這兩個信息都是公衆號的信息,不是開放平臺的信息。
$appid = 'wxcd3024b539782879';
$AppSecret='06e3cfbccb239d029dee5f6cb9c1dbb4';
$weixinUser=new weixinUser($appid,$AppSecret); //初始化對象 $access_token=$weixinUser->get_access_token($code);
var_dump($access_token); //打印access_token,注意:打印的是一個對象,而不是數組。調用其成員變量時要用"->"
$user=$weixinUser->get_user_info($access_token);
var_dump($user); //打印用戶的個人信息
?>

至此,用戶的信息就獲取到了。接下來做公衆號的php支付了。詳見博客微信開發 ---  微信支付PHP SDK —— 公众号支付代码详解。

2016-06-23  21:09:31

PHP微信登錄(網頁授權)之後的獲取用戶的信息的更多相关文章

  1. .Net使用微軟自帶的用戶驗證和登錄授權

    使用微軟的用戶驗證,權限管理的方法 一.使用配置好的數據庫, 1.首先建立想定的數據庫(只填寫名字不加載任何表,如:Login數據庫) 2.使用vs兼容工具命令提示.如圖: 3.導入數據庫所需要的ta ...

  2. 邁向 RHCE 之路 (Day26) - Apache 網頁伺服器

    本篇將在 SELinux 安全機制及 IPTables 防火牆開啟的環境下實作,分別實作簡單網頁服務及虛擬主機 Virtual Host 設定,最後則是實作網頁中需要保護網頁時可以透過 .htacce ...

  3. 問題排查:行動裝置網頁前端 UI 設計 (1)

    這是最近開始接手的一個微信公眾平台專案, 在重整後端程式碼時,因為也需要透過前端來看效果, 所以就因此在前端的部分遇到了不少問題, 畢竟這是以前沒接觸過的領域 (早年的網頁應用程式開發沒有那麼多分工) ...

  4. laravel框架之自帶登錄&註冊

    //控制器層 <?php namespace App\Http\Controllers\admin; use App\Models\admin\Users; use Illuminate\Htt ...

  5. eafier 簡單易用 HTML、CSS 網頁編輯器(可自動插入 Tag 標籤)

    很久很久以前,一般人要做網頁的話大概都會用 FrontPage 之類的工具,更進階一點的會用 Dreamweaver 等軟體.雖然上述軟體提供很方便的「所見即所得」的編輯預覽模式,但寫出來的網頁程式碼 ...

  6. [转载]在網頁上加入HTML5 的Video Tag,直接播放MP4、OGG…等

    在之前有一篇文章提到HTML5(為何iPhone,iPod,iPad不支援Flash,HTML5將更普及於網路世界!!)的重要性,而Html 5的主要革新是在他的語意標籤,像是<video> ...

  7. Microsoft.Jet.Oledb.4.0 提供者並未登錄於本機電腦上

    最近把一些 .NET2.0 的專案從 x86 的 Server 搬到 x64 的 Server 上,一直都相安無事,直到今天才發現使用 Oledb 讀取 Excel 的時候會跳出「'Microsoft ...

  8. 解除網頁無法選取文字、鎖右鍵限制:Enable Copy(Chrome 擴充套件)

    有些网页因会因为某些因素而禁止浏览者直接复制网页上的内容,虽然我们了解站方的意思,不过有些时候会造成一些不必要的困扰. Enable Copy 这款Chrome 扩充套件可以帮你一键解除封锁右键和选取 ...

  9. Flask從入門到入土(四)——登錄實現

    表單介紹 1.表單標籤 聲明表單的範圍,位於表單標籤中的元素將被提交 語法: <form>  </form> 屬性: Method(提交方式get,post) , Enctyp ...

随机推荐

  1. 快速理解Kafka分布式消息队列框架

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ ==是什么 == 简单的说,K ...

  2. LeetCode题解-----First Missing Positive

    Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0]  ...

  3. HDU 4286 Data Handler --双端队列

    题意:有一串数字,两个指针,然后一些添加,删除,反转,以及移动操作,最后输出序列. 解法:可以splay做,但是其实双端队列更简便. 维护三个双端队列LE,MI,RI分别表示[L,R]序列左边,[L, ...

  4. java 21-13 合并

    SequenceInputStream(Enumeration<? extends InputStream> e)           通过记住参数来初始化新创建的 SequenceInp ...

  5. Eclipse c++头文件问题(未完)

    http://stackoverflow.com/questions/7905025/string-could-not-resolved-error-in-eclipse-for-c-eclipse- ...

  6. 程序4-6 utime函数实例

    //http://blog.chinaunix.net/uid-24549279-id-71355.html /* ========================================== ...

  7. Rdlc报表出现空白页解决方法(转)

    在使用RDLC报表时,碰到这种情况:当只有一页数据时,报表确显示两页,第二页除了报表头之外数据为空.然后,当有多页数据时,最后一页为空. 这个问题很奇怪,网上有很多解决方案,以下的方法可以解决此问题. ...

  8. JayProxy的设置

    1. mac http://pac.jayproxy.com/jayproxy/jayproxy.pac 2. wifi http://pac.jayproxy.com/jayproxy/m.pac ...

  9. Socket Programming in C#--Getting Started

    Getting Started You can argue that one can overcome these shortcomings by multithreading meaning tha ...

  10. 磁盘操作- inode/Block深入实战

    一 思路: 1,磁盘物理结构及大小计算 2,分区 MBR GPT知识 3,fdisk分区 挂载 自动挂载 4,格式化文件系统 5,inode block 软硬链接 查看磁盘: [root@moban ...