Реагирование на OpenID с помощью Google OpenID Connect

#react-native #authentication #jwt #google-oauth #openid-connect

#react-native #аутентификация #jwt #google-oauth #openid-connect

Вопрос:

Я работаю над приложением react native, и у меня возникли некоторые проблемы с OpenID connect. Я хотел бы использовать некоторые функции «Входа в систему с помощью Google».

В обычном (не родном) приложении react я использую библиотеку react-google-login следующим образом:

     import { GoogleLogin} from 'react-google-login';
    import axios from 'axios';
    
    const CLIENT_ID = 'xxxxx.apps.googleusercontent.com';
    
    const Login = () => {
        const loginHandler = (response) => {
            // I can use the OpenID JWT token got as response.tokenId e.g.
            axios.get("/myapi", {
              headers: {
                  Authorization: 'Bearer '   response.tokenId
              }
            }).then(res => {
              ...
            });
        }
    
        return (
            <React.Fragment>
                    <GoogleLogin
                        clientId={CLIENT_ID}
                        buttonText='Login'
                        onSuccess={loginHandler}
                        cookiePolicy={'single_host_origin'}
                        responseType='code,token'
                        uxMode="redirect"
                    />
            </React.Fragment>
        )
    }
    
    export default Login;
 

В обработчике входа в систему, как вы можете видеть, я могу использовать токен OpenID JWT и отправить его на сервер.

Мне нужно то же самое в React Native, но я не нашел для этого какой-либо простой библиотеки. Ни один из них не возвращает токен OpenID JWT, а только токен доступа Oauth2.

У кого-нибудь есть идеи, какую библиотеку я должен использовать и как?

Спасибо

Ответ №1:

Возможно, вам следует использовать эту библиотеку

 npm install react-native-app-auth --savereact-native link react-native-app-auth
 

Если вы используете yarn в качестве менеджера пакетов

 yarn add @react-native-app-auth
 

Комментарии:

1. Спасибо за быстрый ответ. Однако было бы неплохо использовать какой-нибудь expo API. Я нашел API Google , но он возвращает только стандартный токен доступа Oauth2, но не токен OpenID connect JWT. Другой — GoogleSignIn , но у него есть другие ограничения, описанные здесь forums.expo.io/t/could-not-sign-in-google-with-expo-sdk-33 / … Но в конце концов кажется, что я должен использовать библиотеку, не связанную с выставкой. Например, тотвы упомянули.

Ответ №2:

Наконец мне удалось добиться этого с помощью AppAuth