重定向时使用 React-Google-Login 的 Google 身份验证问题

Posted

技术标签:

【中文标题】重定向时使用 React-Google-Login 的 Google 身份验证问题【英文标题】:Google Authentication With React-Google-Login issue when redirecting 【发布时间】:2021-09-07 16:40:13 【问题描述】:

我在使用 npm 包 react-google-login 时遇到问题。问题是我有一个 redirectUri 传递到组件中,但是当我尝试使用弹出窗口重定向时没有任何反应,但是当我添加 uxMode='redirect' 时它可以工作,但它给了我一个非常长的 url,这是我不喜欢的.有没有办法使重定向的弹出版本起作用?

下面是我的代码,clientID 被删除:

import React from 'react';
import GoogleLogin from 'react-google-login';
import ChatRoom from './ChatRoom';
import  FontAwesomeIcon  from '@fortawesome/react-fontawesome';
import  faGoogle  from '@fortawesome/free-brands-svg-icons';
import  faQuestionCircle  from '@fortawesome/free-solid-svg-icons';
import Link from 'react-router-dom';

const responseGoogle = (res) => 
    console.log('Failed');


const successLogin = () => 
    console.log('success');


const Authentication = () => 
    return (
            <div className='auth-wrapper'>
                <div className="auth-container">
                    <h1 className="auth-header">Choose Your Sign in Method</h1>
                    <div className="btn-container2">
                        <GoogleLogin 
                            clientId="none"
                            buttonText="Sign in with Google"
                            onSuccess=successLogin
                            onFailure=responseGoogle
                            cookiePolicy='single_host_origin'
                            uxMode='popup'
                            redirectUri='http://localhost:3000/ChatRoom'
                            render=renderProps => (
                                <button className="btn2 btn-primary2 animate shake" onClick=renderProps.onClick disabled=renderProps.disabled><FontAwesomeIcon size='lg' icon=faGoogle /> Sign in with Google</button>
                            )
                        />
                        <Link to='/ChatRoom'>
                            <button className="space btn2 btn-primary2 animate shake">
                                <FontAwesomeIcon size='lg' icon=faQuestionCircle /> Continue as Guest
                            </button>
                        </Link>
                    </div>
                </div>
            </div>
    )


export default Authentication

【问题讨论】:

【参考方案1】:

基本上我所要做的就是使用 react-router-dom 中的 useHistory 并利用 history.push('/page');每当用户通过身份验证时导航到该页面。

let history = useHistory();
// Redirects user after authentication to the ChatRoom
const successLogin = () => 

    history.push('/ChatRoom');


【讨论】:

以上是关于重定向时使用 React-Google-Login 的 Google 身份验证问题的主要内容,如果未能解决你的问题,请参考以下文章

java重定向时如何保持地址栏不变

JSP如何实现网页重定向

使用哈希标签时防止页面重定向

React-Google-Login GoogleLogin 组件抛出 Invalid cookiePolicy 错误

如何使用 ajax jQuery 重定向指定重定向 url

转发和重定向