php获取微信openid方法总结


Posted in PHP onOctober 10, 2019

使用微信接口,无论是自动登录还是微信支付我们首先需要获取的就是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作的文本留言本的例子(二)
Oct 09 PHP
php 页面执行时间计算代码
Dec 04 PHP
php的一些小问题
Jul 03 PHP
php修改时间格式的代码
May 29 PHP
php URL验证正则表达式
Jul 19 PHP
关于svn冲突的解决方法
Jun 21 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
PHP人民币金额转大写实例代码
Oct 02 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
php mysql实现mysql_select_db选择数据库
Dec 30 PHP
phpinfo的知识点总结
Oct 10 #PHP
phpfpm的作用和用法
Oct 10 #PHP
在laravel中实现事务回滚的方法
Oct 10 #PHP
laravel Model 执行事务的实现
Oct 10 #PHP
laravel框架模型、视图与控制器简单操作示例
Oct 10 #PHP
laravel框架数据库配置及操作数据库示例
Oct 10 #PHP
Laravel 关联模型-关联新增和关联更新的方法
Oct 10 #PHP
You might like
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
php伪静态之APACHE篇
2014/06/02 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
Python中list初始化方法示例
2016/09/18 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
工作疏忽检讨书
2014/01/25 职场文书
运动会致辞稿50字
2014/02/04 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android