登录  /  注册
首页 > php框架 > Laravel > 正文

laravel前后端分离获取微信授权,结合laravel-wechat

步履不停
发布: 2019-06-18 16:32:41
原创
5923人浏览过

laravel前后端分离获取微信授权,结合laravel-wechat

1、开始之前,请一定仔细阅读微信开发者文档文档中,总共写了几个步骤:

  • 1、通过appId和需要跳转的路由去请求授权
  • 2、授权之后跳转路由中返回的code 注:前端只需要知道这两个步骤
  • 3、根据code获取access_token
  • 4、根据access_token获取用户信息(snsapi_userinfo授权)
2、前端发起授权请求。这一步需要前端拼凑路由,并且将页面跳转到拼凑路由,路由规则如:https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的公众appId号&redirect_uri=你的回调路由&response_type=code&scope=你选择的方式&state=STATE#wechat_redirect
授权方式可选择为snsapi_userinfo或者snsapi_base,差别请看文档

跳转之后授权页面如下(开发者工具效果)

1616516736-5d035f861370e_articlex.png

3、点击同意之后,会根据你之前拼凑的回调路由返回code,如下:

http://test.***.com/index?code=021Azdiu12zdXd05kkju1ZYkiu1AzdiR&state=1

4、将路由中的code直接传递给后端,让后端做获取用户信息的系列的逻辑处理。
注:如下是laravel中间件中处理方式,session只用于这次请求,也可以将用户的微信信息放在request中到controller进行逻辑处理,看个人喜好
  public function handle($request, Closure $next, $scopes = null)
  {
         $wechatCacheKey = 'wechat.oauth_user.default';
            if (config("qa.mock_user") == 1){
                $user = new SocialiteUser(config('wechat.mock_user'));
            } else {
                $code = $request->get("code", "");
                if ($code === ""){
                    $appId = $this->config["app_id"];
                    return Response::toJson(["aid" => $appId], "请重新获取授权CODE!",10006);
                }
                // 开始拉取用户信息
                $app = Factory::officialAccount($this->config);
                $user = $app->oauth->user();
            }
            session([$wechatCacheKey => $user]);
        }
        return $next($request);
  }
登录后复制

注:这个例子只是写了授权的逻辑,token相关验证我已经做了剔除

坑点:

1、vue的路由会将code拼接在url和#之间,如www.****.com/?code=XXXXX/#/index,这个code需要单独处理

以上就是laravel前后端分离获取微信授权,结合laravel-wechat的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号