当微信的菜单类型是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相关推荐

  1. 微信小程序获取用户的 OpenId (附前端代码)

    OpenId是什么? openid 是表示用户在你的当前应用中的唯一标识,比如小程序,微信公众号等,这些都算是一个应用,如果你有多个应用,同一个用户的openId可能并不相同 **下图是获取OpenI ...

  2. 微信小程序获取用户唯一openid,包含java

    1.首先WXML文件 <button type="primary" open-type="getUserInfo" lang="zh_CN&qu ...

  3. 微信小程序获取用户的openId

    首先调用wx.login({})获取登录凭证(code) 调用接口 用拿到的code 换取 openid 贴代码

  4. 微信开放接口获取用户昵称保存到MySQL中为空白

    微信昵称中包含emoji表情标签,某些标签是使用了4字节编码的UTF8. 而大多数MySQL数据库现在使用的是3字节UTF8编码,这样会导致保存为空,且不会提示失败. 解决方法有2个,一个是升级到My ...

  5. php取微信名字和头像,PHP实现微信获取用户基本信息(openid、头像、昵称)

    error_reporting(1); header('Content-type:text/html; Charset=utf-8'); /* 配置开始 */ $appid = ''; //微信公众平 ...

  6. 微信h5授权获取用户openId的方法和步骤,用于用户登录和注册

    微信公众号的配置和专业名词就不介绍了,不懂的问度娘,我就直接上代码  点击下载完整demo 先说一下我的demo放的位置: 微信H5授权登录分两种: ① 静默授权:snsapi_base,没有弹窗,只 ...

  7. PHP实现微信获取用户基本信息(openid、头像、昵称)

    <?php error_reporting(1); header('Content-type:text/html; Charset=utf-8'); /* 配置开始 */ $appid = '' ...

  8. 微信公众号获取用户openId(扩展:小程序获取openId和手机号)

    微信公众号获取用户openId 拼接的参数[可以直接配菜单中]: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxb2363dd ...

  9. 微信小程序获取用户信息(昵称、头像、openid等)

    1.可以调用wx.getUserProfile来获取用户的昵称.头像(地址).地区及性别.但是需要通过按钮事件触发,在showModal弹窗中用户点击确定后才能获取. WXML: <view&g ...

最新文章

  1. 一份值得收藏的,互联网电商购物车架构演变案例
  2. python 图片base64 编解码,转换成Opencv,PIL.Image图片格式
  3. C++11:move移动语义
  4. python非数值型数据_Python机器学习实战:如何处理非数值特征
  5. 如果你也会C#,那不妨了解下F#(1):F# 数据类型
  6. 使用PLSQL 远程连接oracle数据库
  7. Macos 12 打不开微信解决方案
  8. Java基础篇之什么是CharArrayWriter
  9. Android IPC(三)AIDL实现跨进程通信
  10. 信息论与编码冯桂周林著答案_信息论与编码(信息与通信工程高等学校电子信息类专业系列教材)...
  11. FastAPI 快速入门
  12. No provisioned iOS devices are available with a compatible iOS version.
  13. 如何根据视频的宽屏与竖屏来排序?
  14. 洛谷P1039 侦探推理
  15. iOS音视频开发七:视频采集
  16. 无分类编址(超网)中的网络前缀
  17. Oracle LiveLabs实验:DB Security - Oracle Label Security (OLS)
  18. matlab极性电容叫什么,什么是无极性电容
  19. 抖音短视频开发项目跨入社交圈,头条实现社交梦?
  20. java mysql 时间查询_java 根据时间段查询数据库

热门文章

  1. 用FastDFS一步步搭建文件管理系统
  2. .NET字符串格式化的几种方法及@符号的使用
  3. Android开发笔记(二十)顶部导航栏ActionBar
  4. python 模块,模块名和包 最最简单的使用 入门级 不够详细 不建议参考- - 扫一眼就好
  5. CentOS7单独安装Apache Bench压力测试工具
  6. Shiro入门视频课程——笔记(一)
  7. Amazon WorkSpaces现支持Amazon Linux 2 Desktop
  8. PostgreSQL数值类型--浮点类型和序列
  9. 如何设计数据库(四)
  10. 续易crm源码客户资源管理系统crm源码(源代码c#)