微信公众平台实现获取用户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 相关文章推荐
DedeCms模板安装/制作概述
Mar 11 PHP
php 上传功能实例代码
Apr 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
php中执行系统命令的方法
Mar 21 PHP
非常重要的php正则表达式详解
Jan 04 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
Apr 08 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 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伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
Js经典案例的实例代码
2018/05/10 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
token 机制和实现方式
2020/12/15 Javascript
python连接池实现示例程序
2013/11/26 Python
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
毕业生就业推荐信范文
2013/12/01 职场文书
《四季》教学反思
2014/04/08 职场文书
先进工作者申报材料
2014/12/23 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
药房管理制度范本
2015/08/06 职场文书
详解OpenCV曝光融合
2022/04/29 Python