微信公众平台实现获取用户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 取得瑞年与平年的天数的代码
Aug 10 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 PHP
理解php Hash函数,增强密码安全
Feb 25 PHP
php实现无限级分类
Dec 24 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
详解PHP中的PDO类
Jul 06 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
PHP一个简单的无需刷新爬虫
Jan 05 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
May 29 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 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
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
php实现简单爬虫的开发
2016/03/28 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python django生成迁移文件的实例
2019/08/31 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
使用Python实现音频双通道分离
2020/12/25 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
行政文秘岗位职责范本
2014/02/10 职场文书
小学教师培训感言
2014/02/11 职场文书
门前三包责任书
2014/04/15 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书