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 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
使用 MySQL 开始 PHP 会话
Dec 21 PHP
PHP 页面编码声明方法详解(header或meta)
Mar 12 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
PHP实现的比较完善的购物车类
Dec 02 PHP
php编译安装php-amq扩展简明教程
Jun 25 PHP
php实现将base64格式图片保存在指定目录的方法
Oct 13 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
PHP常见的几种攻击方式实例小结
Apr 29 PHP
PHP面向对象类型约束用法分析
Jun 12 PHP
php将xml转化对象的实例详解
Nov 17 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不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
Python PyQt5标准对话框用法示例
2017/08/23 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
详解Python中的动态属性和特性
2018/04/07 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
平安建设工作方案
2014/06/02 职场文书
教师暑期培训感言
2014/08/15 职场文书
成绩报告单家长评语
2014/12/30 职场文书
幼儿园教师求职信
2015/03/20 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
入党积极分子考察意见
2015/06/02 职场文书
Nginx缓存设置案例详解
2021/09/15 Servers