Я пытаюсь интегрировать OAuth (Facebook) в свое приложение с помощью AWS Amplify. Проблема в том, что при использовании сOAuth HOC я не могу открыть окно авторизации, вместо этого я перенаправляюсь на страницу размещенного пользовательского интерфейса, где я могу нажать Login и т. Д.
Чтобы лучше проиллюстрировать мою проблему, представьте, что вы нажимаете кнопку со страницы, которая отвечает за аутентификацию с Facebook, и вместо того, чтобы показывать вам окно для подтверждения ваших действий, вы получаете перенаправление на страницу размещенного пользовательского интерфейса и Затем вы можете нажать на кнопку входа в Facebook.
URL размещенного пользовательского интерфейса выглядит примерно так:
https://xxxxx.auth.us-east-1.amazoncognito.com/login?redirect_uri=http://localhost:3000/&response_type=code&client_id=yyyyyyyyy
Я попытался получить доступ к местоположению окна напрямую, и это сработало.
Как это работает
export const urlToFacebook = `https://${ oauth.domain }/oauth2/authorize?identity_provider=Facebook&redirect_uri=${ oauth.redirect_uri }&response_type=${oauth.responseType}&client_id=${ oauth.clientId }&scope=aws.cognito.signin.user.admin email openid profile`;
window.location.href = urlToFacebook;
Как это не работает
export const oauth = {
domain: "xxxxxxxx.auth.us-east-1.amazoncognito.com",
scope: [
"email",
"profile",
"openid",
"aws.cognito.signin.user.admin"
],
redirectSignIn: "http://localhost:3000/",
redirectSignOut: "http://localhost:3000/",
responseType: "code"
};
Auth.configure({ oauth });
(Компонент, где я использую с OAuth)
import React from "react";
import { Button, Container, Icon } from "semantic-ui-react";
import { withOAuth } from "aws-amplify-react";
const SocialAuth = (props: any) => {
return (
<Container textAlign="center">
<Button color="facebook" fluid onClick={props.OAuthSignIn}>
<Icon name="facebook" /> Facebook
</Button>
</Container>
);
};
export default withOAuth(SocialAuth);