Рубрики
Uncategorized

Интерфейс Laravel Wechat и серверная часть раздельный доступ к авторизации Wechat в сочетании с laravel-wechat

Автор оригинала: David Wong.

1. Прежде чем начать, пожалуйста, внимательно прочитайте документ разработчика Wechat. В документе есть несколько шагов:

  • 1. Запросите авторизацию через AppID и маршруты, требующие прыжков
  • 2. Код, возвращенный из маршрута перехода после авторизации Примечание: Интерфейсу необходимо знать только эти два шага.
  • 3. Получите access_token в соответствии с кодом
  • 4. Получите информацию о пользователе в соответствии с access_token (авторизация snsapi_userinfo)

2. Интерфейс инициирует запросы на авторизацию. Этот шаг требует сквозной лоскутной маршрутизации и перехода страниц к лоскутной маршрутизации с помощью таких правил маршрутизации, как: Https://open.weixin.qq.com/connect/oauth2/authorize?Appid=ваш публичный обратный вызов AppID, которым вы#wechat_redirect примечания Параметры авторизации могут быть snsapi_userinfo или snsapi_base, см. Документацию для различий

Страница авторизации после перехода выглядит следующим образом (эффект инструмента разработчика)

3. После нажатия на согласие код будет возвращен в соответствии с вашей ранее исправленной маршрутизацией обратного вызова следующим образом:

http://test.***.com/индекс?код=021Azdiu12zdXd05kkju1ZYkiu1AzdiR и состояние=1

4. Передайте код в маршруте непосредственно на серверную часть и позвольте серверной части выполнить ряд логических операций для получения информации о пользователе. Примечание: Ниже приведен метод обработки в laravel промежуточном программном обеспечении. Сеанс используется только для этого запроса. Он также может поместить сообщение пользователя в запрос к контроллеру для логической обработки, в зависимости от личных предпочтений.

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]), "Please retrieve the authorized CODE! "(10006);
                }
                // Start pulling user information
                $app = Factory::officialAccount($this->config);
                $user = $app->oauth->user();
            }
            session([$wechatCacheKey => $user]);
        }
        return $next($request);
  }

Примечание: В этом примере просто записывается логика авторизации, проверка корреляции маркеров, которую я удалил.

Точки:

1. Маршрутизация Vue соединяет код между URL и #, например www.****.com/?код=XXXXX/#/индекс Этот код необходимо обрабатывать отдельно