/** * @param \yii\authclient\ClientInterface $Client * @return bool * @throws \yii\web\ServerErrorHttpException */ public function pushSocialLink(\yii\authclient\ClientInterface $Client) { /** @var \cookyii\modules\Account\resources\Account\Model $self */ $self = $this; $attributes = $Client->getUserAttributes(); /** @var $Model AccountAuthModel */ $Model = \Yii::createObject(AccountAuthModel::class); $token = null; if ($Client instanceof \yii\authclient\BaseOAuth) { $Token = $Client->getAccessToken(); $token = ArrayHelper::toArray($Token); $token['params'] = $Token->getParams(); } return $Model::push($self->id, $Client->getId(), $attributes['id'], $token); }
/** * Parse provider * * @return array */ private function parseProvider() { $profile = $this->client->getUserAttributes(); $token = $this->client->getAccessToken()->getParams(); $data = []; switch ($this->type) { case UserProvider::TYPE_FACEBOOK: $data = $this->parseProviderFacebook($profile, $token); break; case UserProvider::TYPE_VKONTAKTE: $data = $this->parseProviderVkontakte($profile, $token); break; case UserProvider::TYPE_TWITTER: $data = $this->parseProviderTwitter($profile, $token); break; } $data['type'] = $this->type; return $data; }