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写的MySQL数据库用户认证系统代码
Mar 22 PHP
php 方便水印和缩略图的图形类
May 21 PHP
php 数学运算验证码实现代码
Oct 11 PHP
护卫神php套件 php版本升级方法(php5.5.24)
May 10 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
PHP crc32()函数讲解
Feb 14 PHP
PHP接入微信H5支付的方法示例
Oct 28 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
Laravel 修改验证异常的响应格式实例代码详解
May 25 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开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
python实现2048小游戏
2015/03/30 Python
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
Why we need EJB
2016/10/20 面试题
呼兰河传读书笔记
2015/06/30 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis