微信公众平台实现获取用户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维护文件系统
Oct 09 PHP
功能齐全的PHP发送邮件类代码附详细说明
Jul 10 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
Mar 28 PHP
写php分页时出现的Fatal error的解决方法
Apr 18 PHP
关于php正则匹配汉字的方法介绍
Apr 25 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
PHP中使用虚代理实现延迟加载技术
Nov 05 PHP
PHP如何实现跨域
May 30 PHP
PHP实现微信提现(企业付款到零钱)
Aug 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
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
用js实现放大镜效果
2020/10/28 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
在Python中实现贪婪排名算法的教程
2015/04/17 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Django 视图层(view)的使用
2018/11/09 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
Python线程threading模块用法详解
2020/02/26 Python
Django封装交互接口代码
2020/07/12 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
Python列表推导式实现代码实例
2020/09/09 Python
Flask处理Web表单的实现方法
2021/01/31 Python
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
2014元旦晚会策划方案
2014/02/19 职场文书
yy婚礼主持词
2014/03/14 职场文书
美国留学经济担保书
2014/05/20 职场文书
信息管理专业自荐书
2014/06/05 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书