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/#/индекс Этот код необходимо обрабатывать отдельно