У меня есть следующая функция для предоставления аутентификации с помощью Facebook.
public facebookLogin(): void {
FB.getLoginStatus(
(response: any): void => {
if (response.status === 'connected' && response.authResponse) {
this.userFacebookLogin(response);
} else {
FB.login(
(response: any): any => {
let scopes = response.authResponse.grantedScopes;
scopes = scopes.split(',');
if (!scopes.includes('email')) {
this.errors = 'Please give access to email address in order to login with Facebook successfully';
return;
}
this.userFacebookLogin(response);
},
{
scope: 'email',
return_scopes: true,
auth_type: 'rerequest'
}
);
}
},
true
);
}
Теперь я проверяю, подключен ли сначала логин, а затем вызываю другой метод, который, в свою очередь, вызовет сервис, который обрабатывает аутентификацию на стороне сервера на основе токена доступа. Мне нужно убедиться, что пользователь предоставил email
разрешение на вход в систему и, следовательно, в функции входа в FB, я возвращаюсь, если он не находится в grantedScopes
. Проблема с этой реализацией состоит в том, что, когда пользователь нажимает на логин и отменяет выбор электронной почты и дает разрешения Facebook, во второй раз, когда он нажимает на нее, он непосредственно вызывает функцию на стороне сервера, которая находится внутри подключенной проверки. Итак, как я могу снова запросить окно facebook после отображения сообщения об ошибке?