Я использую yii2-dektrium
, чтобы разрешить пользователям входить с учетными записями в Facebook.
После входа в систему мне нужно сделать запрос API с моего сервера, чтобы получить данные учетных записей пользователя.Один из примеров запроса:
$client = Yii::$app->authClientCollection->getClient('facebook');
$response = $client->createApiRequest()
->setMethod('GET')
->setUrl('v2.12/me/accounts')
->send();
access_token
сохраняется в сеансе, поэтому мне необходимо сохранить его в базе данных.
Я уже добавил столбец access_token
в social_account
таблица по умолчанию yii2-dektrium
, но я не знаю, как ее получить и сохранить, и, более того, как применить ее к запросам.
После прочтения некоторое время.Я думаю, что способ сохранить это переопределение метода connect
в dektrium\user\controllers\SecurityController
.
public function connect(ClientInterface $client)
{
/** @var Account $account */
$account = \Yii::createObject(Account::className());
$event = $this->getAuthEvent($account, $client);
$this->trigger(self::EVENT_BEFORE_CONNECT, $event);
$account->connectWithUser($client);
$this->trigger(self::EVENT_AFTER_CONNECT, $event);
$this->action->successUrl = Url::to(['/user/settings/networks']);
}
И для применения к запросу, переопределить applyAccessTokenToRequest
на yii\authclient\clients\Facebook
public function applyAccessTokenToRequest($request, $accessToken)
{
parent::applyAccessTokenToRequest($request, $accessToken);
$data = $request->getData();
if (($machineId = $accessToken->getParam('machine_id')) !== null) {
$data['machine_id'] = $machineId;
}
$data['appsecret_proof'] = hash_hmac('sha256', $accessToken->getToken(), $this->clientSecret);
$request->setData($data);
}
Я не могу это сделать.И я не уверен, что это правильный способ сделать это.Чего мне не хватает?