微信oauth2接口获取用户的openid
当微信的菜单类型是view型时,就需要通过“网页授权获取用户基本信息”接口来获取了,具体接口使用大家自己到微信公众平台去查看文档吧。这里只简述我的方法吧
如果大家view的设置链接为 http://myself.test.cn/index.php?app=weixin&act=getCode
app:是类名.
act:是方法名
以下是获取openid的方法
1、用户同意授权,获取code.这一步很简单
function getCode()
{
//只需将文档中的链接复制过来改为自己的,redirect_uri 参数为网址的回调,切记要用urlencode()处理下,这个网址填写你想要回调的地址,用以接受code
$redirect_uri = urlencode('http://jiuke_shop.eonch.cn/index.php?app=weixin&act=openid_show');//这里我写到控制器weixin 中的openid_show方法
$url_getcode = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$wxconfig['appid'].'&redirect_uri='.$redirect_uri.'&response_type=code& scope=snsapi_base&state=1#wechat_redirect';
header("Location:{$url_getcode}");
}
2、这个是用来接受上面回调所传回来的code,并处理code获得openid
function openid_show()
{
$appid = '.................';//微信公众号 ID
$secret= '.................';//微信公众号 秘钥
if (isset($_GET['code']) && isset($_GET['state']) ){
$code = $_GET['code']; //获取code
$weixin_openid = $this->GetOpenid($_GET['code'],$appid,$secret); //通过GetOpenid获得openid
}
}
//获取微信的openid
function GetOpenid($c_code,$appid,$secret)
{
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid . "&secret=" . $secret . "&code=" . $c_code . "&grant_type=authorization_code";
$result = $this->getData($url);
$jsondecode = json_decode($result);
return $jsondecode->{"openid"};
}
//获取https的get请求结果
function getData($c_url)
{
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $c_url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
// curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
// curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据
}
看懂了也并不复杂吧,以上代码拿来就能用哦,自学的时候确实很头疼呢,现在就来造福下大家吧,为新手们造福。
转载于:https://www.cnblogs.com/zhangkg/p/4670161.html
微信oauth2接口获取用户的openid相关推荐
- 微信小程序获取用户的 OpenId (附前端代码)
OpenId是什么? openid 是表示用户在你的当前应用中的唯一标识,比如小程序,微信公众号等,这些都算是一个应用,如果你有多个应用,同一个用户的openId可能并不相同 **下图是获取OpenI ...
- 微信小程序获取用户唯一openid,包含java
1.首先WXML文件 <button type="primary" open-type="getUserInfo" lang="zh_CN&qu ...
- 微信小程序获取用户的openId
首先调用wx.login({})获取登录凭证(code) 调用接口 用拿到的code 换取 openid 贴代码
- 微信开放接口获取用户昵称保存到MySQL中为空白
微信昵称中包含emoji表情标签,某些标签是使用了4字节编码的UTF8. 而大多数MySQL数据库现在使用的是3字节UTF8编码,这样会导致保存为空,且不会提示失败. 解决方法有2个,一个是升级到My ...
- php取微信名字和头像,PHP实现微信获取用户基本信息(openid、头像、昵称)
error_reporting(1); header('Content-type:text/html; Charset=utf-8'); /* 配置开始 */ $appid = ''; //微信公众平 ...
- 微信h5授权获取用户openId的方法和步骤,用于用户登录和注册
微信公众号的配置和专业名词就不介绍了,不懂的问度娘,我就直接上代码 点击下载完整demo 先说一下我的demo放的位置: 微信H5授权登录分两种: ① 静默授权:snsapi_base,没有弹窗,只 ...
- PHP实现微信获取用户基本信息(openid、头像、昵称)
<?php error_reporting(1); header('Content-type:text/html; Charset=utf-8'); /* 配置开始 */ $appid = '' ...
- 微信公众号获取用户openId(扩展:小程序获取openId和手机号)
微信公众号获取用户openId 拼接的参数[可以直接配菜单中]: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxb2363dd ...
- 微信小程序获取用户信息(昵称、头像、openid等)
1.可以调用wx.getUserProfile来获取用户的昵称.头像(地址).地区及性别.但是需要通过按钮事件触发,在showModal弹窗中用户点击确定后才能获取. WXML: <view&g ...
最新文章
- 一份值得收藏的,互联网电商购物车架构演变案例
- python 图片base64 编解码,转换成Opencv,PIL.Image图片格式
- C++11:move移动语义
- python非数值型数据_Python机器学习实战:如何处理非数值特征
- 如果你也会C#,那不妨了解下F#(1):F# 数据类型
- 使用PLSQL 远程连接oracle数据库
- Macos 12 打不开微信解决方案
- Java基础篇之什么是CharArrayWriter
- Android IPC(三)AIDL实现跨进程通信
- 信息论与编码冯桂周林著答案_信息论与编码(信息与通信工程高等学校电子信息类专业系列教材)...
- FastAPI 快速入门
- No provisioned iOS devices are available with a compatible iOS version.
- 如何根据视频的宽屏与竖屏来排序?
- 洛谷P1039 侦探推理
- iOS音视频开发七:视频采集
- 无分类编址(超网)中的网络前缀
- Oracle LiveLabs实验:DB Security - Oracle Label Security (OLS)
- matlab极性电容叫什么,什么是无极性电容
- 抖音短视频开发项目跨入社交圈,头条实现社交梦?
- java mysql 时间查询_java 根据时间段查询数据库
热门文章
- 用FastDFS一步步搭建文件管理系统
- .NET字符串格式化的几种方法及@符号的使用
- Android开发笔记(二十)顶部导航栏ActionBar
- python 模块,模块名和包 最最简单的使用 入门级 不够详细 不建议参考- - 扫一眼就好
- CentOS7单独安装Apache Bench压力测试工具
- Shiro入门视频课程——笔记(一)
- Amazon WorkSpaces现支持Amazon Linux 2 Desktop
- PostgreSQL数值类型--浮点类型和序列
- 如何设计数据库(四)
- 续易crm源码客户资源管理系统crm源码(源代码c#)