Вход в социальную сеть Facebook Cognito с Angular 6: как использовать возвращенный код для аутентификации пользователя в усиленной аутентификации - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть приложение angular 6, и я пытаюсь настроить социальный вход (facebook) с усилением из документов.

https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-social-idp.html

Я реализовал необходимые шаги, а затем сгенерировал URL для запуска размещенного входа в систему.

https://<your_user_pool_domain>/login?response_type=code&client_id=<your_client_id>&redirect_uri=https://www.example.com

Это перенаправило меня на Facebook, а затем перенаправило обратно на мой сайт, как и ожидалось, с кодом в URL.

https://<mysite>/browse?code=1bfabc0e-f4cd-4889-8811-eaaa71rf6e35#_=_

Я не могу найти никакой документации о том, как я обмениваю этот код на JWT, используя библиотеку ampify.

https://aws -amplify.github.io / усиливать-JS / медиа / angular_guide

Я реализовал базовый вход в Cognito, используя Authenticaor

<amplify-authenticator></amplify-authenticator>

И когда пароль и имя пользователя отправлены, я вижу в ответе http возвращаемые accessToken и idToken.

Auth.signIn(username, password)
.then(user => console.log(user))
.catch(err => console.log(err));

Я пытался просмотреть методы AmplifyService и Auth, но не могу найти ничего, что позволило бы мне предоставить код вместо имени пользователя и пароля.

Заранее спасибо

1 Ответ

0 голосов
/ 19 ноября 2018
  1. Вы можете использовать https://github.com/zyra/ngx-facebook для получения accessToken вместо code.
  2. Вы можете отправить accessToken в API, чтобы изменить его на долгоживущий (60 дней) токен:
public function grantFacebookAccess(Request $request Facebook $fb) {
    $accessToken =  $request->get('accessToken');
    $oAuth2Client = $fb->getOAuth2Client();
    $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
    $params = "first_name,last_name,age_range,gender";
    $user = $fb->get('/me?fields='.$params, $longLivedAccessToken)->getGraphUser();
    print_r($user);
}

Класс Facebook от facebook/graph-sdk (отметьте это: https://quantizd.com/facebook-php-sdk-with-laravel/)

...