>  기사  >  PHP 프레임워크  >  Laravel은 WeChat 인증을 얻기 위해 프런트엔드와 백엔드를 분리하고 laravel-wechat과 결합합니다.

Laravel은 WeChat 인증을 얻기 위해 프런트엔드와 백엔드를 분리하고 laravel-wechat과 결합합니다.

步履不停
步履不停원래의
2019-06-18 16:32:416079검색

Laravel은 WeChat 인증을 얻기 위해 프런트엔드와 백엔드를 분리하고 laravel-wechat과 결합합니다.

1. 시작하기 전에 WeChat 개발자 문서를 주의 깊게 읽어보세요. 이 문서에는 여러 단계가 포함되어 있습니다.

  • 1 리디렉션이 필요한 경로와 appId를 통해 승인을 요청하세요. 인증 후 점프 경로로 반환 참고: 프런트엔드는 이 두 단계만 알아야 합니다
  • 3. 코드를 기반으로 access_token을 가져옵니다注:前端只需要知道这两个步骤
  • 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,差别请看文档

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

Laravel은 WeChat 인증을 얻기 위해 프런트엔드와 백엔드를 분리하고 laravel-wechat과 결합합니다.

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
4. access_token(snsapi_userinfo 인증)을 기반으로 사용자 정보를 가져옵니다. 🎜 ul>🎜🎜2. 프런트 엔드가 승인 요청을 시작합니다. 이 단계에서는 프런트 엔드가 경로를 하나로 묶고 페이지를 조각난 경로로 점프해야 합니다. https://open.weixin.qq.com/connect/oauth2/authorize?appid =공개 앱 ID 번호&redirect_uri= 콜백 경로&response_type=code&scope=선택한 방법&state=STATE#wechat_redirect
참고 인증 방법은 snsapi_userinfo 또는 snsapi_base일 수 있습니다. 차이점🎜점프 후 인증 페이지는 다음과 같습니다(개발자 도구 효과)🎜🎜🎜Laravel은 WeChat 인증을 얻기 위해 프런트엔드와 백엔드를 분리하고 laravel-wechat과 결합합니다.🎜🎜3 동의를 클릭하면 이전에 구성한 콜백 경로에 따라 다음과 같이 코드가 반환됩니다. 🎜🎜http: //test.***.com/index?code =021Azdiu12zdXd05kkju1ZYkiu1AzdiR&state=1🎜🎜4. 경로의 코드를 백엔드에 직접 전달하고 백엔드가 일련의 논리적 처리를 수행하여 사용자 정보를 얻도록 합니다. .
참고:다음은 laravel 미들웨어의 처리 방법입니다. 세션은 이 요청에만 사용됩니다. 요청에 사용자의 WeChat 정보를 넣어서 컨트롤러로 보낼 수도 있습니다. 🎜rrreee🎜참고:이 예에서는 인증 논리만 작성합니다. 이미 토큰 관련 확인을 제거했습니다.🎜

피트 포인트:

🎜1 .Vue 라우팅은 www.****.com/?code=XXXXX/#/index와 같이 URL과 # 사이에 코드를 연결합니다. 이 코드는 별도로 처리해야 합니다🎜

위 내용은 Laravel은 WeChat 인증을 얻기 위해 프런트엔드와 백엔드를 분리하고 laravel-wechat과 결합합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.