wecenter里改造扫码登录跳到自己定义的页面里拿到openid

    WeCenter 程序三叔 发表了文章 • 0 个评论 • 181 次浏览 • 2019-07-09 16:23 • 来自相关话题

    微信oauth登录过程: 引导用户跳转到微信服务器,并且带上一个编码后的地址A 用户在微信服务器,点击同意授权(或者无感知的登录),就会跳转到地址A,并且带上参数code ...查看全部

    微信oauth登录过程:



    引导用户跳转到微信服务器,并且带上一个编码后的地址A

    用户在微信服务器,点击同意授权(或者无感知的登录),就会跳转到地址A,并且带上参数code

    我们需要在地址A拿到code参数,然后加上微信服务号的appid和appkey等参数,请求微信服务器,然后就得到了用户openid和一个token

    用户openid已经是唯一标识符了,如果我们还需要用户其它信息,就需要用token和openid再一次请求微信服务器,从而获取所需信息。



    -----------------------------------------------------



    wecenter扫码登录的二维码解析后是:



    http://www.xxxx.com/?/m/weixin/oauth_redirect/?uri=http://www.xxxx.com/?/m/weixin/qr_login/token-14869783&scope=snsapi_userinfo&state=OAUTH_REDIRECT



    扫码回跳后会拿到code



    具体的参见:



    /app/m/weixin.php里的public function qr_login_action()方法



    我们可以拿到 code 和 token两个参数,这里的token应该是wc生成的,不是微信的access_token



    当然,我的这篇帖子并不是用来介绍wecenter的扫码登录的。



    所以我利用官方的方法来实现自己的目的。



    我们首先改造二维码。



    我们在/app/weixin/main.php里新增代码



    public function login_qr_code_4winform_action()

        {

            include(AWS_PATH . 'Services/phpqrcode/qrlib.php');

            header('Content-Type: image/png');

            ob_clean();

            QRcode::png($this->model('openid_weixin_weixin')->get_oauth_url(get_js_url('/winform/ajax/get_openid/token-' . $this->model('openid_weixin_weixin')->request_client_login_token(session_id())), 'snsapi_userinfo', 'OAUTH_REDIRECT'), null, QR_ECLEVEL_L, 4);

        }



    这里我们参考了官方的代码,修改了上面标红的地方。



    然后我们在 /app/winform/里增加ajax.php,然后在php里增加方法:



     public function get_openid_action()

        {

              if ($_GET['code'])

            {

                if ($access_token = $this->model('openid_weixin_weixin')->get_sns_access_token_by_authorization_code($_GET['code']))

                {

                    echo $access_token['openid'];

                }

                //

            }

        }



    这样就可以在扫码后跳到这个函数里拿到openid了,当然还有access_token 具体想做什么随你。


    感觉WeCenter默认的cookie有点短,建议加长点

    建议龙天 回复了问题 • 2 人关注 • 1 个回复 • 246 次浏览 • 2019-07-09 13:44 • 来自相关话题

    关于wecenter插件系统调查,你当前最需要插件以及作为开发者最希望在哪里内置钩子??

    WeCenter 程序imningfeng 回复了问题 • 3 人关注 • 3 个回复 • 265 次浏览 • 2019-07-08 15:32 • 来自相关话题

    测试上传视频。。。

    WeCenter 程序pipibless 回复了问题 • 4 人关注 • 3 个回复 • 439 次浏览 • 2019-07-08 10:00 • 来自相关话题

    改版的话手机端太难用了

    建议xiaoshui 回复了问题 • 5 人关注 • 4 个回复 • 647 次浏览 • 2019-07-08 10:00 • 来自相关话题

    求助下,这个怎么办

    问与答秋天的图画 回复了问题 • 3 人关注 • 2 个回复 • 231 次浏览 • 2019-07-08 10:00 • 来自相关话题

    wc3.3.2更新后所有文章的段落都添加了更多空白,如图

    WeCenter 程序timilive 回复了问题 • 4 人关注 • 3 个回复 • 378 次浏览 • 2019-07-08 10:00 • 来自相关话题

    WeCenter官方QQ群:432421687

    WeCenter 程序眸中眸 回复了问题 • 2 人关注 • 2 个回复 • 287 次浏览 • 2019-07-08 10:00 • 来自相关话题

    wecenter误入歧途越走越远了

    WeCenter 程序甘立平_761 回复了问题 • 5 人关注 • 3 个回复 • 578 次浏览 • 2019-07-08 10:00 • 来自相关话题

    安装WeCenter 3.3.2问题

    WeCenter 程序fanta 回复了问题 • 2 人关注 • 1 个回复 • 97 次浏览 • 2019-07-08 09:58 • 来自相关话题