不败君

前端萌新&初级后端攻城狮

微信公众号—PHP网页获取用户授权

微信公众号—PHP网页获取用户授权

2019-02-11 11:36:01

围观(3507)

写微信小程序开发时,一边开发一边骂着官方文档烂。

现在需要写公众号的网页授权,突然觉得小程序文档已经很良心了...

小程序文档每个组件或者API至少有DEMO代码片段,到了公众号这边,只告诉你API的URL和使用流程,DEMO或者API测试工具?不存在的!

官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842


既然官方不给DEMO 那就只能把写好的代码贴到这 记录一下,以后需要用到可以来搬


入口代码 (index.php/login.php) 括号内的是文件命名 随便命名都行:

<?php
    $appid='appid';
    //将字符串以URL编码。
    $redirect_uri = urlencode ( 'http://localhost/getUserInfo.php' );
    //拼接字串 将参数拼接进官方接口中
    $url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
    //重定向向官方发送HTTP报头。
    header("Location:".$url);
?>


回调代码 (getUserInfo.php):

<?php
    header("content-type:text/html;charset=utf-8");
    //将GET方式提交的code数据存入变量
    $code = $_GET["code"];
    //判断code是否存在
    if (isset($_GET['code'])){
        $userinfo = getUserInfo($code);
        //userinfo即是用户信息 是个数组。
        var_dump($userinfo);
        /***
         *  
         *  #CODE
         *  业务逻辑编写
         *
         ***/
    }else{
        echo "NO CODE";
    }

    function getUserInfo($code)
    {
        $appid = "appid";
        $appsecret = "appsecret";
        //获取access_token
        $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$appsecret}&code={$code}&grant_type=authorization_code";
        //发起请求 调用https_request函数
        $access_token_json = https_request($access_token_url);
        //将JSON格式的字符串进行解码,并转换为数组
        $access_token_array = json_decode($access_token_json,true);
        //获取access_token
        $access_token = $access_token_array['access_token'];
        //获取openid
        $openid = $access_token_array['openid'];

        //获取用户信息
        $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}";
        //发起请求获得用户信息的JSON格式字符串
        $userinfo_json = https_request($userinfo_url);
        //将JSON格式字符串编码并转为数组
        $userinfo_array = json_decode($userinfo_json,ture);
        return $userinfo_array;
    }

    /***
     *  自定义https_request函数,发起请求并返回结果
     ***/
    function https_request($url)
    {
        //初始化CURL
        $curl = curl_init();
        //设置CURL请求参数
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl,  CURLOPT_SSL_VERIFYHOST, FALSE);
        $data = curl_exec($curl);
        if (curl_errno($curl)){
            return 'ERROR'.curl_error($curl);
        }
        curl_close($curl);
        return $data;
    }
?>


最后别忘了需要到公众号平台设置一下:

wechat.png

设置的时候需要验证token 代码后续再贴上。


本文地址 : bubaijun.com/page.php?id=117

版权声明 : 未经允许禁止转载!

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语