Maison >cadre php >Laravel >Laravel sépare le front-end et le back-end pour obtenir l'autorisation WeChat, combinée avec laravel-wechat

Laravel sépare le front-end et le back-end pour obtenir l'autorisation WeChat, combinée avec laravel-wechat

步履不停
步履不停original
2019-06-18 16:32:416198parcourir

Laravel sépare le front-end et le back-end pour obtenir l'autorisation WeChat, combinée avec laravel-wechat

1. Avant de commencer, veuillez lire attentivement le Document du développeur WeChat Dans le document, il y a au total plusieurs étapes :

.
  • 1. Demander l'autorisation via l'appId et l'itinéraire à parcourir
  • 2 Le code renvoyé dans l'itinéraire de saut après autorisation 注:Le front-end n'a besoin que de connaître ces deux-là. étapes
  • 3. Obtenez access_token selon le code
  • 4. Obtenez les informations utilisateur (autorisation snsapi_userinfo) selon access_token
2. une demande d'autorisation. Cette étape nécessite que le front-end reconstitue l'itinéraire et accède à la page pour reconstituer l'itinéraire. Les règles de routage sont les suivantes : https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的公众appId号&redirect_uri=你的回调路由&response_type=code&scope=你选择的方式&state=STATE#wechat_redirect
La méthode d'autorisation peut être snsapi_userinfo ou snsapi_base pour le. différence, veuillez consulter le document

après avoir accédé à la page d'autorisation comme suit (effet de l'outil de développement)

Laravel sépare le front-end et le back-end pour obtenir lautorisation WeChat, combinée avec laravel-wechat

3. Après avoir cliqué sur Accepter, le code apparaîtra. être renvoyé en fonction de la route de rappel que vous avez établie auparavant, comme suit :

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

4. Transmettez le code dans la route directement au backend et laissez le backend faire une série. de traitement logique pour obtenir des informations sur l'utilisateur.
注:Ce qui suit est la méthode de traitement dans le middleware laravel. La session n'est utilisée que pour cette demande. Vous pouvez également mettre les informations WeChat de l'utilisateur dans la demande et les envoyer au contrôleur pour un traitement logique. préférence
  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);
  }

注:Cet exemple écrit uniquement la logique d'autorisation, et j'ai déjà éliminé la vérification liée au jeton

Pièges :

1. code entre l'url et # , tel que www.****.com/?code=XXXXX/#/index, ce code doit être traité séparément

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn