微信公众平台实现获取用户OpenID的方法
作者:kp878 发布时间:2023-11-17 05:55:56
标签:微信公众平台,用户
本文实例讲述了微信公众平台实现获取用户OpenID的方法。分享给大家供大家参考。具体分析如下:
用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,但是view不能获取用户的openid,需要使用微信“网页授权获取用户基本信息”高级接口结合使用,获得用户的登入个人信息。
具体方法:
1、配置网页授权回调域名,如 www.aspxhome.com
2、模拟公众号的第三方网页,https://www.aspxhome.com/getcodeurl.php
<?php
if(isset($_SESSION['user'])){
print_r($_SESSION['user']);
exit;
}
$APPID='公众号在微信的appid';
$REDIRECT_URI='https://www.aspxhome.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://www.aspxhome.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的微信公众平台开发有所帮助。


猜你喜欢
- 本文实例为大家分享了opencv矿石图片检测矿石数量的具体代码,供大家参考,具体内容如下原始矿石图片此类图片是高躁图,二值化后图像如下采用膨
- 本文实例讲述了Python实现在线暴力破解邮箱账号密码功能。分享给大家供大家参考,具体如下:dic 字典格式如下(mail.txt) :us
- 0 引言上周被一则新闻震惊到了,《2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 》,在2019年5月2日开奖的双色球中,广东中
- 近日大家热议的盗版XP黑屏问题想必很多人都知道了,在这里就不多说。据媒体报道,微软公司将实施逐步投放策略,预计本周将投放5%黑屏,下周投放2
- 英文文档:reversed(seq)Return a reverse iterator. seq must be an object whi
- 信号(signals)Flask信号(signals, or event hooking)允许特定的发送端通知订阅者发生了什么(既然知道发生
- Queue模块保持线程同步利用Queue对象先进先出的特性,将每个生产者的数据一次存入队列,而每个消费者将依次从队列中取出数据import
- 代码很简洁,功能很实用,这里就不多废话了,直接奉上:<?php/** * 获取客户端IP * @param&nbs
- find()方法判断字符串str,如果起始索引beg和结束end索引能找到在字符串或字符串的一个子串中。语法以下是find()方
- Jupyter Notebooks 是什么?Jupyter Notebooks 是一款开源的网络应用,我们可以将其用于创建和共享代码与文档。
- 图例如下https://github.com/Dongvdong/python_Smartvoice上电后,只要周围声音超过 2000,开始
- Python数据库编程之pymysql学习之前务必安装MySQL并已启动相关服务。一、pymsql的安装在python3的环境中直接使用以下
- 第一种方法Python的cv2库中自带彩色转灰度的方法,而且非常简单,代码就9行,核心代码就1行。大题思路就是先读取一张彩色图片,然后在窗口
- 如下所示:# -*- coding: utf-8 -*-from __future__ import unicode_literalsfro
- mysql查询字段为null的数据navicat查询数据为null的数据varchar字段 默认为(null)所以查询的语句是se
- Python写入Excel有时需要合并单元格、或者改变文字内容的颜色首先导入xlwt模块import xlwt创建文件名创建Excel工作簿
- 本文使用的是163邮件进行测试。注:163邮箱现在需要使用 客户端授权码 进行测试,不再支持邮箱密码进行测试。 
- 这篇文章主要介绍了python定义类self用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 网上搜了很多方法都不奏效,研究了一天,发现通过以下的配置可以完美支持 'URL_MODEL' => 2 的情况了 lo
- 本文实例讲述了php+mysqli数据库连接的两种方式。分享给大家供大家参考。具体如下:这里讲述mysqli数据库连接两种方式比较,即面向对