当前位置: 首页>>代码示例>>PHP>>正文


PHP ClientInterface::getUserAttributes方法代码示例

本文整理汇总了PHP中yii\authclient\ClientInterface::getUserAttributes方法的典型用法代码示例。如果您正苦于以下问题:PHP ClientInterface::getUserAttributes方法的具体用法?PHP ClientInterface::getUserAttributes怎么用?PHP ClientInterface::getUserAttributes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在yii\authclient\ClientInterface的用法示例。


在下文中一共展示了ClientInterface::getUserAttributes方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: successCallback

 /**
  * 
  * @param \yii\authclient\ClientInterface $client
  * @return type
  */
 public function successCallback($client)
 {
     // TODO: Group FK's to one local user.
     //       Otherwise, if we log in via FB and another time via google, we
     //       end up with two local accounts.
     if (!$this->action instanceof \yii\authclient\AuthAction) {
         throw new \yii\base\InvalidCallException("successCallback is only meant to be executed by AuthAction!");
     }
     $attributes = $client->getUserAttributes();
     $externalUser = new AuthForm();
     $externalUser->authProvider = $client->getName();
     $externalUser->externalUserId = array_key_exists('id', $attributes) ? $attributes['id'] : null;
     if ($externalUser->validate()) {
         Yii::info('AuthForm validated.');
         if ($externalUser->isRegistered()) {
             Yii::info('ExternalUser is registered. Logging in and redirecting to game/index.');
             $externalUser->login();
             return $this->action->redirect(Url::to(['site/index'], true));
         } else {
             throw new \yii\base\InvalidCallException("Can't login non-registered user '{$externalUser->externalUserId}@{$externalUser->authProvider}'!");
         }
     } else {
         // TODO error. Throw, display actionError?
         Yii::info('AuthForm couldn\'t be validated. Errors: ' . print_r($externalUser->errors, true));
         Yii::info('Client attributes: ' . print_r($attributes, true));
     }
 }
开发者ID:iw-reload,项目名称:iw,代码行数:32,代码来源:SiteController.php

示例2: onAuthSuccess

 /**
  * @param $client
  *
  * TODO
  */
 public function onAuthSuccess(ClientInterface $client)
 {
     $attributes = $client->getUserAttributes();
     /* @var $auth UserAuth */
     $auth = UserAuth::find()->where(['source' => $client->getId(), 'source_id' => $attributes['id']])->one();
     if (Yii::$app->user->isGuest) {
         if ($auth) {
             $user = $auth->user;
             Yii::$app->user->login($user);
         } else {
             if (isset($attributes['email']) && User::find()->where(['email' => $attributes['email']])->exists()) {
                 Yii::$app->getSession()->setFlash('error', [Yii::t('app', "User with the same email as in {client} account already exists but isn't linked to it. Login using email first to link it.", ['client' => $client->getTitle()])]);
             } else {
                 if ($client->signIn()) {
                     $this->redirect('/profile');
                 }
             }
         }
     } else {
         if (!$auth) {
             $auth = new UserAuth(['user_id' => Yii::$app->user->id, 'source' => $client->getId(), 'source_id' => $attributes['id']]);
             $auth->save();
         }
     }
 }
开发者ID:mrbighokage,项目名称:book-test-yii2,代码行数:30,代码来源:DefaultController.php

示例3: findSocialProfile

 /**
  * Ищет в базе и возвращает авторизующийся социальный профиль.
  * Если не найден — сохраняет и возвращает.
  *
  * @param ClientInterface $client
  *
  * @throws Exception
  * @return SocialProfile
  */
 protected function findSocialProfile(ClientInterface $client)
 {
     $attributes = $client->getUserAttributes();
     if (null === ($profile = SocialProfile::findOne(['socialId' => $attributes['user_id']]))) {
         $profile = $this->save($attributes);
     }
     return $profile;
 }
开发者ID:sly13,项目名称:maps,代码行数:17,代码来源:SiteController.php

示例4: createLog

 /**
  * @param \yii\authclient\ClientInterface $Client
  * @return static
  */
 public static function createLog(\yii\authclient\ClientInterface $Client)
 {
     $AuthResponse = new static();
     $AuthResponse->client = $Client->getId();
     $attributes = $Client->getUserAttributes();
     $AuthResponse->response = Json::encode($attributes);
     return $AuthResponse;
 }
开发者ID:cookyii,项目名称:module-account,代码行数:12,代码来源:Model.php

示例5: byClient

 /**
  * Finds an account by client.
  * @param  ClientInterface $client
  * @return AccountQuery
  */
 public function byClient(ClientInterface $client)
 {
     //xiaoma update
     //qq and sina 's attr has no id
     $client_type = $client->getId();
     switch ($client_type) {
         case 'qq':
             $client_id = $client->getUserAttributes()['openid'];
             break;
         case 'sina':
             $client_id = $client->getUserAttributes()['uid'];
             break;
         default:
             $client_id = $client->getUserAttributes()['id'];
             break;
     }
     return $this->andWhere(['provider' => $client->getId(), 'client_id' => $client_id]);
 }
开发者ID:wangwillout,项目名称:yii2-user,代码行数:23,代码来源:AccountQuery.php

示例6: updateUserInfo

 /**
  * @param Account $user
  */
 private function updateUserInfo(Account $user)
 {
     $attributes = $this->client->getUserAttributes();
     //        $github = ArrayHelper::getValue($attributes, 'login');
     //        if ($user->github === null && $github) {
     //            $user->github = $github;
     //            $user->save();
     //        }
 }
开发者ID:modernkernel,项目名称:yii2-skeleton,代码行数:12,代码来源:AuthHandler.php

示例7: authSuccessCallback

 /**
  * @param \yii\authclient\ClientInterface $Client
  * @throws \yii\base\NotSupportedException
  */
 public function authSuccessCallback(\yii\authclient\ClientInterface $Client)
 {
     $AuthResponse = new \resources\User\Auth\Response();
     $AuthResponse->client = $Client->getId();
     $attributes = $Client->getUserAttributes();
     $AuthResponse->response = Json::encode($attributes);
     $UserQuery = \resources\User::find();
     switch ($Client->getId()) {
         case 'facebook':
             $UserQuery->byFacebookId($attributes['id']);
             break;
         case 'github':
             $UserQuery->byGithubId($attributes['id']);
             break;
         case 'google':
             $UserQuery->byGoogleId($attributes['id']);
             break;
         case 'linkedin':
             $UserQuery->byLinkedinId($attributes['id']);
             break;
         case 'live':
             $UserQuery->byLiveId($attributes['id']);
             break;
         case 'twitter':
             $UserQuery->byTwitterId($attributes['id']);
             break;
         case 'vkontakte':
             $UserQuery->byVkontakteId($attributes['id']);
             break;
         case 'yandex':
             $UserQuery->byYandexId($attributes['id']);
             break;
     }
     /** @var \resources\User $User */
     $User = $UserQuery->one();
     if ($User instanceof \resources\User) {
         $AuthResponse->result = Json::encode($User->id);
     } else {
         $User = new \resources\User();
         $User->appendClientAttributes($Client);
         if ($User->save()) {
             $User->createSocialLink($Client);
             $AuthResponse->result = Json::encode($User->id);
             AuthManager()->assign(RbacFactory::Role(\frontend\Permissions::ROLE_USER), $User->id);
         } else {
             $AuthResponse->result = Json::encode($User->getErrors());
         }
     }
     $AuthResponse->save();
     if ($User instanceof \resources\User && !$User->isNewRecord) {
         $User->save();
         User()->login($User, 86400);
     }
 }
开发者ID:rmrevin,项目名称:yii2-application,代码行数:58,代码来源:SignController.php

示例8: autorizar

 /**
  * Red Social
  */
 public function autorizar()
 {
     $attributes = $this->client->getUserAttributes();
     $model = new LoginRedSocialForm();
     $model->red_social = $this->client->getName();
     $model->perfil_id = $attributes['id'];
     $model->correo = isset($attributes['email']) ? $attributes['email'] : null;
     $model->nombre = $attributes['first_name'];
     $model->apellido = $attributes['last_name'];
     $model->genero = $attributes['gender'];
     $model->url_perfil = $attributes['link'];
     $model->localidad = $attributes['locale'];
     $model->estado = $attributes['verified'];
     $model->access_token = $this->token_acces;
     $model->imagen = $this->getImagenPerfilFacebook($attributes['id']);
     //Set return url if the user is authenticated. AuthAction will handle the redirect
     if ($returnUrl = $model->autenticarUsuario()) {
         \Yii::$app->user->setReturnUrl($returnUrl);
     }
 }
开发者ID:alejandrososa,项目名称:AB,代码行数:23,代码来源:AuthRedSocial.php

示例9: appendClientAttributes

 /**
  * @param \yii\authclient\ClientInterface $Client
  * @throws \yii\base\NotSupportedException
  */
 public function appendClientAttributes(\yii\authclient\ClientInterface $Client)
 {
     /** @var \cookyii\modules\Account\resources\Account\Model $self */
     $self = $this;
     $attributes = $Client->getUserAttributes();
     switch ($Client->getId()) {
         default:
             $attributes = null;
             break;
         case 'facebook':
             $attributes = $this->appendFacebookAttributes($attributes);
             break;
         case 'instagram':
             $attributes = $this->appendInstagramAttributes($attributes);
             break;
         case 'github':
             $attributes = $this->appendGithubAttributes($attributes);
             break;
         case 'google':
             $attributes = $this->appendGoogleAttributes($attributes);
             break;
         case 'linkedin':
             $attributes = $this->appendLinkedinAttributes($attributes);
             break;
         case 'live':
             $attributes = $this->appendLiveAttributes($attributes);
             break;
         case 'twitter':
             $attributes = $this->appendTwitterAttributes($attributes);
             break;
         case 'vkontakte':
             $attributes = $this->appendVkontakteAttributes($attributes);
             break;
         case 'yandex':
             $attributes = $this->appendYandexAttributes($attributes);
             break;
         case 'odnoklassniki':
             $attributes = $this->appendOdnoklassnikiAttributes($attributes);
             break;
     }
     if (!empty($attributes)) {
         foreach ($attributes as $key => $value) {
             $attr = $self->getAttribute($key);
             if ($self->hasAttribute($key) && empty($attr)) {
                 $self->setAttribute($key, $value);
             }
         }
     }
 }
开发者ID:cookyii,项目名称:module-account,代码行数:53,代码来源:SocialTrait.php

示例10: social

 public function social(ClientInterface $client)
 {
     $user_data = new UserData($client->getName(), $client->getUserAttributes());
     if (Yii::$app->user->isGuest) {
         $user = User::findSocial($user_data->getObjectName(), $user_data->getObjectName());
         if ($user) {
             Login::login($user);
         } else {
             $user_data->save();
         }
     } else {
         User::saveSocial(Yii::$app->user->identity, $user_data);
     }
     Yii::$app->session->set('social', $client->getName());
 }
开发者ID:kissarat,项目名称:yii2-template,代码行数:15,代码来源:UserController.php

示例11: authenticate

 public function authenticate(ClientInterface $client)
 {
     $attributes = $client->getUserAttributes();
     $provider = $client->getId();
     $clientId = $attributes['id'];
     $model = SocialAccount::find()->where(['provider' => $provider, 'client_id' => $clientId])->one();
     if ($model === NULL) {
         $model->save(FALSE);
     }
     if (NULL === ($user = $model->getUser())) {
         $this->action->successUrl = Url::to(['/user/registration/connect', 'account_id' => $model->id]);
     } else {
         Yii::$app->user->login($user, UserModule::$rememberMeDuration);
     }
 }
开发者ID:fabristyle,项目名称:yii2-user-1,代码行数:15,代码来源:AuthController.php

示例12: authenticate

 /**
  * Logs the user in if this social account has been already used. Otherwise shows registration form.
  *
  * @param  ClientInterface $client
  * @return \yii\web\Response
  */
 public function authenticate(ClientInterface $client)
 {
     $attributes = $client->getUserAttributes();
     $provider = $client->getId();
     $clientId = $attributes['id'];
     if (null === ($account = $this->module->manager->findAccount($provider, $clientId))) {
         $account = $this->module->manager->createAccount(['provider' => $provider, 'client_id' => $clientId, 'data' => json_encode($attributes)]);
         $account->save(false);
     }
     if (null === ($user = $account->user)) {
         $this->action->successUrl = Url::to(['/user/registration/connect', 'account_id' => $account->id]);
     } else {
         \Yii::$app->user->login($user, $this->module->rememberFor);
     }
 }
开发者ID:ilyar,项目名称:dektrium-yii2-user,代码行数:21,代码来源:SecurityController.php

示例13: authenticate

 /**
  * Logs the user in if this social account has been already used. Otherwise shows registration form.
  * @param  ClientInterface $client
  * @return \yii\web\Response
  */
 public function authenticate(ClientInterface $client)
 {
     $attributes = $client->getUserAttributes();
     $provider = $client->getId();
     $clientId = $attributes['id'];
     $account = UserAccount::find()->where(['provider' => $provider, 'client_id' => $clientId])->one();
     if ($account === null) {
         $account = \Yii::createObject(['class' => UserAccount::className(), 'provider' => $provider, 'client_id' => $clientId, 'data' => json_encode($attributes), 'created_at' => time()]);
         $account->save(false);
     }
     if (null === ($user = $account->user)) {
         $this->action->successUrl = Url::to(['/site/connect', 'account_id' => $account->id]);
     } else {
         \Yii::$app->user->login($user, 1209600);
         // two weeks
     }
 }
开发者ID:grutabow,项目名称:getyii,代码行数:22,代码来源:SecurityController.php

示例14: parseProfile

 /**
  * Parse profile
  *
  * @return array
  */
 private function parseProfile()
 {
     $profile = $this->client->getUserAttributes();
     $data = [];
     switch ($this->type) {
         case UserProvider::TYPE_FACEBOOK:
             $data = $this->parseProfileFacebook($profile);
             break;
         case UserProvider::TYPE_VKONTAKTE:
             $data = $this->parseProfileVkontakte($profile);
             break;
         case UserProvider::TYPE_TWITTER:
             $data = $this->parseProfileTwitter($profile);
             break;
     }
     return $data;
 }
开发者ID:rkit,项目名称:bootstrap-yii2,代码行数:22,代码来源:AuthProviderHandler.php

示例15: onAuthSuccess

 /**
  * @param ClientInterface $client
  */
 public function onAuthSuccess($client)
 {
     $attributes = $client->getUserAttributes();
     $email = ArrayHelper::getValue($attributes, 'email');
     /** @var Auth $auth */
     $auth = Auth::find()->where(['source' => $client->getId(), 'source_id' => $attributes['id']])->one();
     if (Yii::$app->user->isGuest) {
         if ($auth) {
             // login
             $user = $auth->user;
             Yii::$app->user->login($user, 3600 * 24 * 30);
         } else {
             // signup
             if (User::find()->where(['email' => $email])->exists()) {
                 Yii::$app->getSession()->setFlash('error', [Yii::t('app', "User with the same email as in {client} account already exists but isn't linked to it. Login using email first to link it.", ['client' => $client->getTitle()])]);
             } else {
                 $password = Yii::$app->security->generateRandomString(6);
                 $user = new User(['username' => $attributes['login'], 'email' => $email, 'password' => $password]);
                 $user->generateAuthKey();
                 $user->generatePasswordResetToken();
                 $transaction = $user->getDb()->beginTransaction();
                 if ($user->save()) {
                     $auth = new Auth(['user_id' => $user->id, 'source' => $client->getId(), 'source_id' => (string) $attributes['id']]);
                     if ($auth->save()) {
                         $transaction->commit();
                         Yii::$app->user->login($user, 3600 * 24 * 30);
                     } else {
                         print_r($auth->getErrors());
                         die;
                     }
                 } else {
                     print_r($user->getErrors());
                     die;
                 }
             }
         }
     } else {
         // user already logged in
         if (!$auth) {
             // add auth provider
             $auth = new Auth(['user_id' => Yii::$app->user->id, 'source' => $client->getId(), 'source_id' => $attributes['id']]);
             $auth->save();
         }
     }
 }
开发者ID:hucongyang,项目名称:yiiframework.com,代码行数:48,代码来源:SiteController.php


注:本文中的yii\authclient\ClientInterface::getUserAttributes方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。