oauth2.0 Google Auth2回调后未设置Cookie

nxowjjhe  于 2023-10-15  发布在  Go
关注(0)|答案(1)|浏览(127)

我正在使用FastAPI并进行Google身份验证调用。但是,在从身份验证返回后,cookie不会被设置。我试过跳过身份验证,直接进入回调,cookie设置工作。但当我首先进行Google身份验证时,它似乎没有设置cookie,尽管它到达了代码的那一部分并完成了没有错误。

@router.get("/login", tags=['Google SSO'])
async def google_login():
    with GoogleSSO(
        GOOGLE_CLIENT_ID,
        GOOGLE_CLIENT_SECRET,
        "http://localhost:8000/v1/google/callback",
        allow_insecure_http=True
    ) as google_sso:
        return await google_sso.get_login_redirect(params={"prompt": "consent", "access_type": "offline"})

@router.get("/callback", tags=['Google SSO'])
async def google_callback(request: Request, db: Session = Depends(get_db)):
        access_token = 'test'
        response = RedirectResponse(url="http://127.0.0.1:3000/home", status_code=status.HTTP_302_FOUND)
        response.set_cookie(
            key=SESSION_COOKIE_NAME,
            value=access_token,
            httponly=True,
            domain="127.0.0.1",  # Set the domain to match your front end URL
            path="/",  # Set the path to '/' to make the cookie available across the entire site
        )
        return response
mdfafbf1

mdfafbf11#

好吧,我在这方面取得了一些进展。如果你有类似的问题,你已经尝试过设置这一切:

httponly=True,
            domain="127.0.0.1",  # Set the domain to match your front end URL
            path="/",

然后参考我使用的代码的顶部:

http://localhost:8000/v1/google/callback"

我的实际测试是在www.example.com上完成127.0.0.1不是localhost,所以我不得不将其更改为:“http://127.0.0.1:8000/v1/google/callback“,我不得不在Google控制台中将允许的回调URI更改为这个。
这给我留下了一个问题,它第一次工作,但当用户登录一次,我再试一次,它失败了。看看我能不能把这一点弄清楚。

相关问题