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实现的功能是显示8条基色色带
Oct 09 PHP
一个php作的文本留言本的例子(五)
Oct 09 PHP
PHP合并数组+与array_merge的区别分析
Aug 01 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
解决php-fpm.service not found问题的办法
Jun 06 PHP
php实现等比例压缩图片
Jul 26 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
Yii实现简单分页的方法
2016/04/29 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
MooTools 1.2介绍
2009/09/14 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
Python 自动化表单提交实例代码
2017/06/08 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
Python之文字转图片方法
2018/05/10 Python
Python多图片合并PDF的方法
2019/01/03 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
python em算法的实现
2020/10/03 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
新学期红领巾广播稿
2014/01/14 职场文书
网页美工求职信
2014/02/15 职场文书
策划总监岗位职责
2014/02/16 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书