微信公众平台实现获取用户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 相关文章推荐
社区(php&amp;&amp;mysql)二
Oct 09 PHP
PHP数字格式化
Dec 06 PHP
php mysql数据库操作分页类
Jun 04 PHP
php动态生成JavaScript代码
Mar 09 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
Oct 26 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 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判断字符以及字符串的包含方法属性
2008/08/30 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
ajax 缓存 问题 requestheader
2010/08/01 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
js实现简单的打印表格
2020/01/15 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
个人简历自我评价八例
2013/10/31 职场文书
社会实践活动总结范文
2014/07/03 职场文书
面试通知单大全
2015/04/20 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android