微信公众平台实现获取用户OpenID的方法


Posted in PHP onApril 15, 2015

本文实例讲述了微信公众平台实现获取用户OpenID的方法。分享给大家供大家参考。具体分析如下:

用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,但是view不能获取用户的openid,需要使用微信“网页授权获取用户基本信息”高级接口结合使用,获得用户的登入个人信息。

具体方法:

1、配置网页授权回调域名,如 3water.com

2、模拟公众号的第三方网页,https://3water.com/getcodeurl.php

<?php 
if(isset($_SESSION['user'])){ 
 print_r($_SESSION['user']);
exit;
}
$APPID='公众号在微信的appid';
$REDIRECT_URI='https://3water.com/callback.php';
$scope='snsapi_base';
//$scope='snsapi_userinfo';//需要授权
$url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$APPID.'&redirect_uri='.urlencode($REDIRECT_URI).'&response_type=code&scope='.$scope.'&state='.$state.'#wechat_redirect';
header("Location:".$url);
?>

3、第三方网页的回跳url中,首先从请求中取得code,然后根据code进一步换取openid和access_token,然后就可以根据openid和access_token调用微信的相关接口查询用户信息了。

<?php
//https://3water.com/callback.php
$appid = "公众号在微信的appid"; 
$secret = "公众号在微信的app secret"; 
$code = $_GET["code"]; 
$get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$get_token_url); 
curl_setopt($ch,CURLOPT_HEADER,0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
$res = curl_exec($ch); 
curl_close($ch); 
$json_obj = json_decode($res,true); 
//根据openid和access_token查询用户信息 
$access_token = $json_obj['access_token']; 
$openid = $json_obj['openid']; 
$get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN'; 

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL,$get_user_info_url); 
curl_setopt($ch,CURLOPT_HEADER,0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
$res = curl_exec($ch); 
curl_close($ch); 

//解析json 
$user_obj = json_decode($res,true); 
$_SESSION['user'] = $user_obj; 
print_r($user_obj); 
?>

希望本文所述对大家基于php的微信公众平台开发有所帮助。

PHP 相关文章推荐
在线增减.htpasswd内的用户
Oct 09 PHP
PHP分页显示制作详细讲解
Nov 19 PHP
PHP的autoload机制的实现解析
Sep 15 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
PHP实现的简单日历类
Nov 29 PHP
thinkPHP分组后模板无法加载问题解决方法
Jul 12 PHP
PHP类相关知识点实例总结
Sep 28 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 PHP
php实现格式化多行文本为Js可用格式
Apr 15 #PHP
php截取指定2个字符之间字符串的方法
Apr 15 #PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 #PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 #PHP
微信API接口大全
Apr 15 #PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 #PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 #PHP
You might like
PHP游戏编程25个脚本代码
2011/02/08 PHP
第六章 php目录与文件操作
2011/12/30 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
一个简易的js图片轮播效果
2017/07/22 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
python生成日历实例解析
2014/08/21 Python
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
代码实例讲解python3的编码问题
2019/07/08 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
python反扒机制的5种解决方法
2021/02/06 Python
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
婚纱摄影师求职信
2014/03/07 职场文书
活动总结报告格式
2014/05/09 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
老干部座谈会主持词
2015/07/03 职场文书