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桌面中心(三) 修改数据库
Mar 11 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
PHP 小心urldecode引发的SQL注入漏洞
Oct 27 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
PHP生成等比缩略图类和自定义函数分享
Jun 25 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
Nov 19 PHP
PHP截取指定图片大小的方法
Dec 10 PHP
php的常量和变量实例详解
Jun 27 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
PHP实现将base64编码字符串转换成图片示例
Jun 22 PHP
php实现分页功能的详细实例方法
Sep 29 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环境搭建最新方法
2006/09/05 PHP
php5.2时间相差8小时
2007/01/15 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
jquery等待效果示例
2014/05/01 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
2017/07/05 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
python&amp;MongoDB爬取图书馆借阅记录
2016/02/05 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
Python交互式图形编程的实现
2019/07/25 Python
python实现猜拳游戏项目
2020/11/30 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
汽车驾驶求职信
2013/10/25 职场文书
通信工程专业毕业生推荐信
2013/12/25 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
导游词之阆中古城
2019/12/23 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python
Python+Appium自动化测试的实战
2021/06/30 Python
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
python实现会员管理系统
2022/03/18 Python
mysql查询结果实现多列拼接查询
2022/04/03 MySQL
MySQL 数据库范式化设计理论
2022/04/22 MySQL