资讯专栏INFORMATION COLUMN

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

刘厚水 / 1419人阅读

摘要:开始之前,请一定仔细阅读微信开发者文档文档中,总共写了几个步骤通过和需要跳转的路由去请求授权授权之后跳转路由中返回的注前端只需要知道这两个步骤根据获取根据获取用户信息授权前端发起授权请求。

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,差别请看文档

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

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需要多带带处理

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31710.html

相关文章

  • 使用nginx代理,支持微信网页授权不同域名

    摘要:前提了解微信这个过程必须要明白感谢超神的图片从流程我们可以看到,回调域名其实就是我们的网页授权域名。 承认有点标题党了。这次开发一个项目遇到问题,以前有两个微信老项目基于yaf,域名为m.baidu.com(做示例),然后网页授权域名填的是m.baidu.com,而这次新开发的项目是基于laravel,那么域名为wechat.baidu.com,但是网页授权域名怎么办,这就坑爹了。当然...

    only_do 评论0 收藏0
  • 业务中前后分离下的微信授权流程记录

    摘要:业务中前后端分离下的微信授权流程记录这个是微信授权的流程我觉得微信的文档授权流程还算清晰易懂,可是不太清楚具体是哪部分前端做,哪部分后端做导致在业务中,折腾了不少时间,特此记录一下业务实践。 业务中前后端分离下的微信授权流程记录 这个是微信授权的流程 https://mp.weixin.qq.com/wiki... https://mp.weixin.qq.com/wiki... 我觉...

    GitChat 评论0 收藏0
  • 使用 vue2.0 开发微信公众号下前后分离的SPA站点的填坑之旅

    摘要:目前正在写一个微信公众号的小项目,记录一下遇到的问题和解决方法主要是前端。前端提交时使用,在后端再取出对应的微信支付看了下文档,以前是需要用唤起支付,而现在则是把微信内置到了微信的浏览器中。 目前正在写一个微信公众号的小项目,记录一下遇到的问题和解决方法(主要是前端)。内容持续更新中~ 主要实现 前后端分离前端为 SPA 单页面使用微信的JSSDK微信支付 技术方案 后端使用 php ...

    afishhhhh 评论0 收藏0
  • 使用 vue2.0 开发微信公众号下前后分离的SPA站点的填坑之旅

    摘要:目前正在写一个微信公众号的小项目,记录一下遇到的问题和解决方法主要是前端。前端提交时使用,在后端再取出对应的微信支付看了下文档,以前是需要用唤起支付,而现在则是把微信内置到了微信的浏览器中。 目前正在写一个微信公众号的小项目,记录一下遇到的问题和解决方法(主要是前端)。内容持续更新中~ 主要实现 前后端分离前端为 SPA 单页面使用微信的JSSDK微信支付 技术方案 后端使用 php ...

    Taonce 评论0 收藏0
  • 基于token的用户权限认证机制——以微信公众号授权网页为例

    摘要:微信提供了作为识别用户身份的凭证,可以结合设计一套用户身份权限认证机制。认证免疫跨站请求伪造,而认证则存在遭受的可能性。此处的是引导用户进入授权页面后微信服务器附加上去的,详细方法见微信公众平台的微信授权网页文档。 项目背景 最近在开发一个微信公众号商城,在调用下单、支付、查询订单等等接口时,需要验证用户的身份。微信提供了openid作为识别用户身份的凭证,可以结合openid设计一套...

    3fuyu 评论0 收藏0

发表评论

0条评论

刘厚水

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<