public function actionOk() { if (\yii::$app->request->get('error') || is_null(\yii::$app->request->get('code'))) { \yii::$app->response->redirect(\yii::$app->params['loginURL']); } $code = \yii::$app->request->get('code'); $config = \yii::$app->params['okAPI']; $userData = OK::getUserToken($config, $code); if (!isset($userData->access_token)) { \yii::$app->response->redirect('/auth'); } OK::setConfig($config); $currentUser = OK::getCurrentUser($userData->access_token); if (!isset($currentUser->uid)) { \yii::$app->response->redirect('/auth'); } $user = User::find()->where(['site' => User::SITE_OK, 'socialid' => $currentUser->uid])->one(); if (!$user) { $user = new User(); $user->site = User::SITE_OK; $user->status = User::STATUS_SOCIAL_APPROVE; $user->socialid = (string) $currentUser->uid; $user->token = (string) $userData->refresh_token; $isSaved = $user->save(); if (!$isSaved) { throw new Exception('Не удалось сохранить пользователя.'); } } else { $user->token = $userData->refresh_token; $user->save(); } \yii::$app->session->set('USER', $user); \yii::$app->response->redirect('/auth/checktype'); }