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 Primary script unknown 解决方法总结)
- php开发中用什么模板(PHP模版引擎原理、定义与用法实例)
- php抽象入门教程(php抽象方法和普通方法的区别点总结)
- php八大模式详解(php设计模式之工厂模式用法经典实例分析)
- php系统转换的三种方式(PHP容器类的两种实现方式示例)
- php面向对象编程代码(php面向对象程序设计入门教程)
- phpstudy怎么修改mysql版本(PhpStudy集成环境升级MySQL数据库版本的方法)
- php网站经典案例(PHP生成短网址的思路以及实现方法的详解)
- php如何调用类(php创建类并调用的实例方法)
- php验证码初始化教程交流(PHP token验证生成原理实例分析)
- php7.4编译安装(PHP7.3.10编译安装教程)
- php内置加密函数(php过滤htmlspecialchars 函数实现把预定义的字符转换为 HTML 实体用法分析)
- 零基础学php好吗(零基础php编程好学吗)
- php用什么解压(php解压缩zip和rar压缩包文件的方法)
- php面向对象怎么调用属性(PHP面向对象程序设计__tostring和__invoke用法分析)
- php入门教程环境搭建教程(PHP从零开始打造自己的MVC框架之入口文件实现方法详解)
- 销 售 买 卖 你真的了解这四个字了吗(销售买)
- 谢娜是得罪快乐大本营造型师了吗 全场被黑化(谢娜是得罪快乐大本营造型师了吗)
- 前《iLOOK》时装总监 《快乐大本营》御用造型师上线(快乐大本营御用造型师上线)
- 释小龙晒杀青照片 多重身份惹观众期待(释小龙晒杀青照片)
- 《九牛之人降魔传》开机 演员祁高坤化身九牛之人除魔卫道(九牛之人降魔传开机)
- 王铲铲的致富之路无限金币卡法攻略教学(王铲铲的致富之路无限金币卡法攻略教学)
热门推荐
- mysql为什么优选innodb(如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog)
- laravel模型使用技巧(提高Laravel应用性能方法详解)
- IQueryable与IEnumberable的区别
- laravel 数据库配置信息(Laravel 读取 config 下的数据方法)
- python进度条怎么实现(Python小进度条显示代码)
- python微信窗口内容获取(python使用wxpy轻松实现微信防撤回的方法)
- mysql的主从复制怎么做(MySQL主从复制原理以及需要注意的地方)
- linux telnet命令使用(Linux telnet命令的使用)
- js函数对象
- php协议使用教程学习(php中的钩子理解及应用实例分析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9