微信公众平台实现获取用户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 相关文章推荐
资料注册后发信小技巧
Oct 09 PHP
PHP中ADODB类详解
Mar 25 PHP
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
php 获取全局变量的代码
Apr 21 PHP
PHP 字符串正则替换函数preg_replace使用说明
Jul 15 PHP
php标签云的实现代码
Oct 10 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
PHP中trim()函数简单使用指南
Apr 16 PHP
php array_values 返回数组的值实例详解
Nov 17 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 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使用eAccelerator的API开发详解
2013/06/09 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
使用Python编写Linux系统守护进程实例
2015/02/03 Python
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
Python API自动化框架总结
2019/11/12 Python
详解Django配置优化方法
2019/11/18 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
小学师德标兵先进事迹材料
2014/05/25 职场文书
运动会200米广播稿
2015/08/19 职场文书
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python