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中的串行化变量和序列化对象
Sep 05 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
PHP中常用的输出函数总结
Sep 22 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
php判断访问IP的方法
Jun 19 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
Joomla框架实现字符串截取的方法示例
Jul 18 PHP
PHP实现基于状态的责任链审批模式详解
May 31 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
一步一步学习PHP(8) php 数组
2010/03/05 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
python使用webbrowser浏览指定url的方法
2015/04/04 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
python实现list由于numpy array的转换
2018/04/04 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
园林技术个人的自我评价
2014/01/08 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
刘公岛导游词
2015/02/05 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python