Heim >php教程 >php手册 >Einfache Implementierung des PHP-Quellcodes für die WeChat-Webseitenautorisierung (OAuth2.0).

Einfache Implementierung des PHP-Quellcodes für die WeChat-Webseitenautorisierung (OAuth2.0).

PHP中文网
PHP中文网Original
2016-08-29 08:36:501060Durchsuche

Zusammenfassung:

 1. Es wird empfohlen, das OAuth2.0-Protokoll zu studieren.

 2. Offizielle WeChat-Dokumente und offizielle WeChat-Website-Tools müssen vollständig genutzt werden.

Es ist relativ einfach, posten Sie einfach den Quellcode direkt. Darunter muss der Teil „xxxxxxxxxx“ entsprechend Ihrer eigenen Umgebung ersetzt werden

/**
     * OAuth2.0微信授权登录实现
     *
     * @author zzy
     * @文件名:GetWxUserInfo.php
     */

    // 回调地址
    $url = urlencode("http://www.xxxxxxxxx.com/GetWxUserInfo.php");
    // 公众号的id和secret
    $appid = 'xxxxxxxxx';
    $appsecret = 'xxxxxxxxx';
    session_start();

    
    // 获取code码,用于和微信服务器申请token。 注:依据OAuth2.0要求,此处授权登录需要用户端操作
    if(!isset($_GET['code']) && !isset($_SESSION['code'])){
        echo 
        &#39;<a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6c11a252ff1d00c4
        &redirect_uri=&#39;.$url.&#39;&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect">
        <font style="font-size:30">授权</font></a>&#39;;
      
        exit;
    }
    
    // 依据code码去获取openid和access_token,自己的后台服务器直接向微信服务器申请即可
    if (isset($_GET[&#39;code&#39;]) && !isset($_SESSION[&#39;token&#39;])){
        $_SESSION[&#39;code&#39;] = $_GET[&#39;code&#39;];
        
        $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid.
            "&secret=".$appsecret."&code=".$_GET[&#39;code&#39;]."&grant_type=authorization_code";
        $res = https_request($url);
        $res=(json_decode($res, true));
        $_SESSION[&#39;token&#39;] = $res;
    }
    
    print_r($_SESSION);
    
    // 依据申请到的access_token和openid,申请Userinfo信息。
    if (isset($_SESSION[&#39;token&#39;][&#39;access_token&#39;])){
        $url = "https://api.weixin.qq.com/sns/userinfo?
        access_token=".$_SESSION[&#39;token&#39;][&#39;access_token&#39;]."&openid=".$_SESSION[&#39;token&#39;][&#39;openid&#39;]."&lang=zh_CN";
        echo $url;
        $res = https_request($url);
        $res = json_decode($res, true);
        
        $_SESSION[&#39;userinfo&#39;] = $res;

    }
    
    print_r($_SESSION);

    // cURL函数简单封装
    function https_request($url, $data = null)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

Das korrekte Ergebnis lautet wie folgt:

 

Array
(
    [code] => 041GZI4l0tvGHg10N75l05FQ4l0GZI42
    [token] => Array
        (
            [access_token] => TWo6w5QMpzTZibu3FPh2k4EdC5bllp4sGeQkC4NbZtj-zti-ctZj1SrrNL1qGCf2lB1-6o3N7
            kh2bcxl5bxtQqJEGk1cq12l8CzF40R9XvA
            [expires_in] => 7200
            [refresh_token] => Iz3olCrkqPBOJvSSH2bOKvA09Sjvsp1c8Ltm7MvxxPfQXSbvI_WoVmzhjqASzwlMa7TAGgsg
            3mIJmaHjL7jrJHDqUF1jKbhd6GNDnLtXq0U
            [openid] => ota_XwQ4r_5nioVmshQ
           
            [scope] => snsapi_userinfo
        )

    [userinfo] => Array
        (
            [openid] => ota_XwQ4r_5nioVmshQq
            [nickname] => 野狐
            [sex] => 1
            [language] => zh_CN
            [city] => 杭州
            [province] => 浙江
            [country] => 中国
            [headimgurl] => http://wx.qlogo.cn/mmopen/PiajxSqBRaELwee7rhrt2ibnkC1MEnu04WiaWrw9FkuPBbGOgnr
            MbynNoEuxicgXOetW5VqQbTrS4fZDXNvAWsz6GQ/0
            [privilege] => Array
                (
                )

        )

)


Das Obige ist die einfache Implementierung des PHP-Quellcodes für die WeChat-Webseitenautorisierung (OAuth2.0). Für weitere verwandte Inhalte achten Sie bitte auf PHP Chinesische Website (www.php.cn)!



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn