微信公众平台实现获取用户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中的CMS的涵义
Mar 11 PHP
dedecms模版制作使用方法
Apr 03 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
php入门之连接mysql数据库的一个类
Apr 21 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
基于ThinkPHP实现批量删除
Dec 18 PHP
php头像上传预览实例代码
May 02 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
PHP如何防止用户重复提交表单
Dec 09 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 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的cURL库简介及使用示例
2015/02/06 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
用javascript实现给图片加链接
2007/08/15 Javascript
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
jQuery知识点整理
2015/01/30 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
详解Bootstrap插件
2016/04/25 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
PyQt5主窗口动态加载Widget实例代码
2018/02/07 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
哈理工毕业生的求职信
2013/12/22 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
小学班主任评语
2014/12/29 职场文书
办公室文员岗位职责
2015/02/04 职场文书
学期个人自我总结
2015/02/13 职场文书
文书工作总结(范文)
2019/07/11 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
Golang实现AES对称加密的过程详解
2021/05/20 Golang
JavaScript实现队列结构过程
2021/12/06 Javascript