微信公众平台实现获取用户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 相关文章推荐
计算2000年01月01日起到指定日的天数
Oct 09 PHP
用PHP实现的生成静态HTML速度快类库
Mar 31 PHP
php mssql 时间格式问题
Jan 13 PHP
PHP多个版本的分析解释
Jul 21 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
Apr 08 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 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生成16位随机数的代码(两种方法)
2014/09/16 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
js表格分页实现代码
2009/09/18 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
2016/04/13 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
sqlalchemy对象转dict的示例
2014/04/22 Python
Python解惑之整数比较详解
2017/04/24 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
tornado+celery的简单使用详解
2019/12/21 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
python集合删除多种方法详解
2020/02/10 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
大专生简历的自我评价
2013/11/26 职场文书
四年级学生评语大全
2014/04/21 职场文书
党性观念心得体会
2014/09/03 职场文书
教师党员个人整改措施
2014/10/27 职场文书
优秀英文求职信范文
2015/03/19 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书