博客列表 >6.01 浅谈微信网页授权登录流程及代码实例

6.01 浅谈微信网页授权登录流程及代码实例

Allen的php博客
Allen的php博客原创
2018年06月03日 16:01:241318浏览

微信网页授权登录流程:

1、首先通过微信自定义菜单:用户同意授权,页面发生跳转到显示用户信息方法,获取code;

2、通过code换取网页授权access_token,得到取得access_token和openid;

3、将access_token和openid,传入到微信提供的接口当中,拉取用户信息。

实例:

建立Weixin.php控制器:


    // 微信网页授权

    // 获取当前用户的昵称、头像信息

    // 1 第一步:用户同意授权,获取code

    // 2 第二步:通过code换取网页授权access_token

    // 3 第三步:刷新access_token(如果需要)

    // 4 第四步:拉取用户信息(需scope为 snsapi_userinfo和snsapi_base两种方式)

    public function auth()

    {

        //第一步:用户同意授权,获取code

        $redirect = 'http://4aebdc06.ngrok.io/index.php/index/weixin/userinfo'; //转到显示用户信息方法userinfo()

        $url_code = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.config('app.APPID').'&redirect_uri='.urlEncode($redirect).'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';

        header('Location:'.$url_code);

    }


    // 显示用户信息

    public function userinfo()

    {

        // 获取code

        $code = input('get.code');


        // 第二步:通过code换取网页授权access_token

        $res = $this->model->auth_access_token($code, true); //调用模型auth_access_token()

        $auth_access_token = $res['access_token']; //获取网页授权access_token

        $openid = $res['openid']; //获取公众号的唯一标识


        // 第三步:拉取用户信息(需scope为 snsapi_userinfo)

        $userinfo = $this->model->get_userinfo($auth_access_token,$openid);

        dump($userinfo);


    }



第二、第三步,模型Weixin.php:


    //网页授权access_token

    public function auth_access_token($code)

    {

        $appid = Config::get('app.APPID'); //获取微信开发者ID(AppID)

        $appsecret = Config::get('app.APPSECRET'); //获取微信开发者密码

        $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';

        $res = http_get($url);

        $res = json_decode($res,true);

        if(!isset($res['access_token'])){

            return false;

        }

        return $res;


    }


    // 拉取用户信息

    public function get_userinfo($auth_access_token,$openid){

        $url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$auth_access_token.'&openid='.$openid.'&lang=zh_CN';

        $res = http_Get($url);

        $res = json_decode($res,true);

        return $res;

    }


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议