`
koothon
  • 浏览: 7093 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

微信授权验证类

阅读更多
微信auth授权验证类,在别人的基础上修改的,有用的上的参考下
<?php

/**
* 微信授权相关接口
*
*
*/

class wechatauth {
   
    //高级功能-》开发者模式-》获取
    private $app_id = 'wxa0c4*************';
    private $app_secret = 'e095b6dc**********************';

    /**
     * 获取微信授权链接
     *
     * @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";
    }
   
    /**
     * 获取授权token
     *
     * @param string $code 通过get_authorize_url获取到的code
     */
    public function get_access_token($app_id = '', $app_secret = '', $code = '')
    {
        $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->app_id}&secret={$this->app_secret}&code={$code}&grant_type=authorization_code";
        $token_data = $this->http($token_url);
       
        if($token_data[0] == 200)
        {
            return json_decode($token_data[1], TRUE);
        }
       
        return FALSE;
    }
   
    /**
     * 获取授权后的微信用户信息
     *
     * @param string $access_token
     * @param string $open_id
     */
    public function get_user_info($access_token = '', $open_id = '')
    {
        if($access_token && $open_id)
        {
            $info_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$open_id}&lang=zh_CN";
            $info_data = $this->http($info_url);
           
            if($info_data[0] == 200)
            {
                return json_decode($info_data[1], TRUE);
            }
        }
       
        return FALSE;
    }
    /**
     * 验证授权
     *
     * @param string $access_token
     * @param string $open_id
     */
    public function check_access_token($access_token = '', $open_id = '')
    {
        if($access_token && $open_id)
        {
            $info_url = "https://api.weixin.qq.com/sns/auth?access_token={$access_token}&openid={$open_id}&lang=zh_CN";
            $info_data = $this->http($info_url);
           
            if($info_data[0] == 200)
            {
                return json_decode($info_data[1], TRUE);
            }
        }
       
        return FALSE;
    }
    //curl
    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);
    }

}
复制代码
放出输出的demo,有用的上的可以参考
//微信认证链接
    public function wxurl(){
        import('MyClass.Wechatauth',APP_PATH);
        $Wechat = new wechatauth();
        $token = session('token'); //查看是否已经授权
        if (!empty($token)) {
            print_r($token);
            $state = $Wechat->check_access_token($token['access_token'],$token['openid']); //检验token是否可用(成功的信息:"errcode":0,"errmsg":"ok")
            print_r($state);
        }
        $url = $Wechat->get_authorize_url('http://twx.vjiankang.org/wsite/test/wxrurl','1'); //此处链接授权后,会跳转到下方处理
        echo '<a href='.$url.'>授权</a>';
    }
   
    //微信返回字符串
    public function wxrurl(){
        import('MyClass.Wechatauth',APP_PATH);
        $Wechat = new wechatauth();
        print_r($_GET); //授权成功后跳转到此页面获取的信息
        $token = $Wechat->get_access_token('','',$_GET['code']); //确认授权后会,根据返回的code获取token
        print_r($token);
        session('token',$token); //保存授权信息
        $user_info = $Wechat->get_user_info($token['access_token'],$token['openid']); //获取用户信息
        print_r($user_info);
    }
复制代码
需要注意的是,我们用于返回的url,需要在微信公众平台-》开发者-》auth认证里修改为同一域名下
分享到:
评论

相关推荐

    易语言微信授权模块+例子.rar

    《易语言微信授权模块及其应用解析》 在数字化时代的今天,微信已经成为人们日常生活与工作中不可或缺的通讯工具。而“易语言微信授权模块”是开发者利用易语言进行微信接口调用和功能开发的重要工具,它为程序员...

    微信授权登录.rar

    在IT行业中,微信授权登录是常见的用户身份验证方式,尤其在移动端应用开发中十分流行。本文将详细解析“微信授权登录.rar”中的知识点,包括C#开放平台信息配置、代码调整、openid的使用以及微信小程序获取用户手机...

    js微信网页授权登录获取详细信息

    本文将深入探讨js微信网页授权登录以及企业微信授权登录的详细步骤、原理和注意事项。 1. **微信网页授权登录流程** 微信网页授权登录通常分为四个主要步骤: - **引导用户跳转**:在网页中,通过JS代码调用微信...

    java处理小程序授权和app微信授权

    在Java开发中,微信授权和小程序授权是移动应用与微信平台交互的重要环节,主要用于实现用户身份验证和数据安全。本文将详细讲解如何使用Java处理小程序和App的微信授权,以及解析小程序传递的`encryptedData`参数,...

    微信授权登录demo源码

    微信授权登录是微信开放平台提供的一种服务,允许第三方应用通过用户授权的方式获取微信用户的个人信息,以便进行特定功能的实现,如用户身份验证、个性化服务等。这个“微信授权登录demo源码”是一个简单的示例,...

    微信登录授权

    3. 获取授权码:用户在微信授权页面确认后,微信会返回一个授权码给第三方应用。 4. 换取Access Token和OpenID:应用拿着授权码、AppID、AppSecret等信息向微信服务器发起请求,换取Access Token和OpenID。Access ...

    企业微信授权登录.rar

    总的来说,企业微信授权登录提供了便捷的身份验证方式,使得企业内部的应用可以无缝接入企业微信的账号体系,提高用户体验,同时也简化了开发者的工作。正确理解和使用“企业微信授权登录.rar”中的资源,能够帮助...

    微信授权登录旧版jar包.rar

    wei.jar是这个压缩包中的核心文件,它包含了实现微信授权登录所需的类和方法。通常,这类jar包会提供一系列接口,供开发者在Android或者Java项目中调用,如OAuth2.0授权协议的支持,用于获取用户的微信OpenID,进而...

    Nopcommerce WeChat微信授权插件

    Nopcommerce WeChat微信授权插件是一款专门为Nopcommerce电子商务平台设计的扩展模块,它使得商家能够集成微信的社交登录功能,为用户提供更加便捷的购物体验。Nopcommerce是一款开源的、高度可定制的电子商务解决...

    Java实现微信授权登录

    在Java开发中,微信授权登录是一种常见的用户身份验证机制,特别是在构建Web应用时。这个工具包简化了这一过程,使得开发者无需深入理解微信OAuth2.0授权协议的复杂细节就能集成微信登录功能。以下是关于“Java实现...

    第三方实现微信登录(微信授权登录和微信网页扫码登录)

    本教程将详细讲解如何实现第三方应用中的微信授权登录和微信网页扫码登录。 一、微信授权登录 1. **微信开放平台注册**:首先,你需要在微信开放平台(open.weixin.qq.com)注册并创建一个应用,获取到AppID和App...

    微信授权及支付简易demo

    - 对于微信授权,Java后台需要实现OAuth2.0的接口,处理授权码的交换过程,这部分可能涉及到`WechatOAuth2API`类或接口。 - 微信支付部分,需要集成微信支付SDK,处理签名生成、统一下单、订单查询等功能,通常会...

    Java 微信授权登录实例.rar

    通过这个"Java 微信授权登录实例.rar"压缩包,我们可以深入理解Java环境下微信授权登录的基本步骤、涉及到的关键技术和所使用的库。 首先,微信授权登录主要基于OAuth 2.0协议,它是一种广泛使用的授权框架,允许第...

    authorize_企业微信授权示例_

    总的来说,企业微信授权示例是一个涉及到OAuth2.0协议、用户身份验证、单点登录等多个环节的技术实践。理解并掌握这一过程,对于企业级应用的开发和与企业微信的深度集成至关重要。在实际操作中,需要注意安全性和...

    安卓应用使用微信授权登陆的时候jar包

    `libammsdk.jar`就是微信SDK的一个组成部分,它包含了与微信授权登录相关的类和方法。这个旧版的jar包可能是因为微信官方已经发布了新版本的SDK,但相关的文档尚未更新,使得开发者在尝试使用新版本时遇到困难。 ...

    微信授权登陆源码

    微信授权登录源码详解 微信授权登录是一种广泛应用于移动互联网应用和网站的用户登录方式,它允许用户通过自己的微信账号快速注册和登录到第三方服务,极大地提升了用户体验。本篇文章将深入探讨微信授权登录的实现...

    企业微信 身份验证 网页授权登录.docx

    企业微信网页授权登录是一种重要的身份验证机制,它允许企业通过网页形式收集用户的授权信息,从而实现用户身份的验证。本文将深入解析这一过程的关键步骤,包括如何构造网页授权链接、获取access_token以及通过...

    微信授权获取微信地址源码.rar

    微信授权获取微信地址源码是微信开放平台提供的一项功能,允许开发者通过用户的微信授权来获取其在微信中保存的地理位置信息。这个过程涉及到微信OAuth2.0授权机制、API调用以及用户隐私保护等多个关键知识点。 ...

Global site tag (gtag.js) - Google Analytics