php服务号openid(php获取微信openid方法总结)
类别:编程学习 浏览量:1863
时间:2021-10-18 11:33:50 php服务号openid
php获取微信openid方法总结使用微信接口,无论是自动登录还是微信支付我们首先需要获取的就是openid,获取openid的方式有两种,一种是在关注的时候进行获取,这种订阅号就可以获取的到,第二种是通过网页授权获取,这种获取需要的是认证服务号。
今天我要说的是第二种网页授权获取openid。下面是我写的一个关于获取openid的类
|
<?php /** * 微信授权相关接口 * * @link http://www.phpddt.com */ class Wchat { private $app_id = 'wx444444444444' ; private $app_secret = '77777777' ; private $state = 'aaaa' ; /** * 获取微信授权链接 * * @param string $redirect_uri 跳转地址 * @param mixed $state 参数 */ public function get_authorize_url( $redirect_uri = '' , $state = '' ) { $redirect_uri = urlencode( $redirect_uri ); return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect" ; } /** * 获取微信openid */ public function getOpenid( $turl ) { if (!isset( $_GET [ 'code' ])){ //触发微信返回code码 $url = $this ->get_authorize_url( $turl , $this ->state); Header( "Location: $url" ); exit (); } else { //获取code码,以获取openid $code = $_GET [ 'code' ]; $access_info = $this ->get_access_token( $code ); return $access_info ; } } /** * 获取授权token网页授权 * * @param string $code 通过get_authorize_url获取到的code */ public function get_access_token( $code = '' ) { $appid = $this ->app_id; $appsecret = $this ->app_secret; $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid . "&secret=" . $appsecret . "&code=" . $code . "&grant_type=authorization_code" ; //echo $token_url; $token_data = $this ->http( $token_url ); // var_dump( $token_data); if ( $token_data [0] == 200) { $ar =json_decode( $token_data [1], TRUE); return $ar ; } return $token_data [1]; } public function http( $url , $method = '' , $postfields = null, $headers = array (), $debug = false) { $ci = curl_init(); /* Curl settings */ curl_setopt( $ci , CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt( $ci , CURLOPT_CONNECTTIMEOUT, 30); curl_setopt( $ci , CURLOPT_TIMEOUT, 30); curl_setopt( $ci , CURLOPT_RETURNTRANSFER, true); switch ( $method ) { case 'POST' : curl_setopt( $ci , CURLOPT_POST, true); if (! empty ( $postfields )) { curl_setopt( $ci , CURLOPT_POSTFIELDS, $postfields ); $this ->postdata = $postfields ; } break ; } curl_setopt( $ci , CURLOPT_URL, $url ); curl_setopt( $ci , CURLOPT_HTTPHEADER, $headers ); curl_setopt( $ci , CURLINFO_HEADER_OUT, true); $response = curl_exec( $ci ); $http_code = curl_getinfo( $ci , CURLINFO_HTTP_CODE); if ( $debug ) { echo "=====post data======\r\n" ; var_dump( $postfields ); echo '=====info=====' . "\r\n" ; print_r(curl_getinfo( $ci )); echo '=====$response=====' . "\r\n" ; print_r( $response ); } curl_close( $ci ); return array ( $http_code , $response ); } } ?> |
getOpenid($turl)这个方法就是获取openid的方法。前端调用代码如下:
|
$openid =isset( $_COOKIE [ 'openid' ])? $_COOKIE [ 'openid' ]: '' ; if ( empty ( $openid )) { $wchat = new wchat(); $t_url = 'http://' . $_SERVER [ 'HTTP_HOST' ]. '/user.php?act=register' ; $info = $wchat ->getOpenid( $t_url ); if ( $info ){ $openid = $info [ 'openid' ]; setcookie( 'openid' , $openid ,time()+86400*30); } } |
以上就是我总结的获取openid的方法啦。
以上就是php获取微信openid的详细内容,更多请关注开心学习网其它相关文章!
您可能感兴趣
- php博客开发短信原理(PHP如何实现阿里云短信sdk灵活应用在项目中的方法)
- php数据库怎么获得表单(php如何把表单内容提交到数据库)
- php语言程序设计基础面向对象(PHP面向对象程序设计之对象的遍历操作示例)
- php实现redis消息队列(redis+php实现微博三微博列表功能详解)
- ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解(ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解)
- thinkphp5框架怎么打开(thinkphp5.1框架中容器Container和门面Facade的实现方法分析)
- php如何继承多个类(PHP面向对象程序设计子类扩展父类子类重新载入父类操作详解)
- wordpress的静态php页面在哪(如何让PHPnow支持wordpress静态化链接的方法)
- php排序代码详解(PHP实现数据四舍五入的方法小结4种方法)
- dedecms版本介绍(解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法)
- apachephp环境搭建(apache集成php7.3.5的详细步骤)
- php添加到数组的用法(详解PHP 7.4 中数组延展操作符语法知识点)
- php7语法代码规范(PHP7新功能总结)
- php验证码初始化教程交流(PHP token验证生成原理实例分析)
- js和php加密(RSA实现JS前端加密与PHP后端解密功能示例)
- php小例子(PHP反射实际应用示例)
- 三杨 共辅四朝帝王,构建明帝国内阁行政圈(三杨共辅四朝帝王)
- 红色文化进国企(红色文化进国企)
- 车友的选择| 轮毂该如何选(车友的选择轮毂该如何选)
- 秦海璐炫耀和王新军热恋蜜事,不料对方吐槽她吃饱后肚子撅老高(秦海璐炫耀和王新军热恋蜜事)
- 秦海璐一袭旗袍惹人倾心,将高级与淡雅展现的游刃有余(秦海璐一袭旗袍惹人倾心)
- 门外之见 海蛎子味 的表演,能走多远(门外之见海蛎子味)
热门推荐
- html5课程入门(萌新的HTML5 入门指南)
- dedecms如何发表文章(dedecms实现调用所有顶级栏目下最新文章的方法)
- webpack常用的配置(webpack-dev-server搭建本地服务器的实现)
- jquery实现在光标位置插入内容
- dedecms的使用教程(解析DedeCms中data目录下的sessions是什么文件)
- laravel模块教程(Laravel框架创建路由的方法详解)
- php中isset函数有什么功能(PHP中的empty、isset、isnull的区别与使用实例)
- canvas图片填充位置(手摸手教你用canvas实现给图片添加平铺水印的实现)
- 织梦tag标签怎样设置(织梦dede修改关键字长度的方法)
- python format的用法(Python中format格式输出全解)