我正在使用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
1条答案
按热度按时间mdfafbf11#
好吧,我在这方面取得了一些进展。如果你有类似的问题,你已经尝试过设置这一切:
然后参考我使用的代码的顶部:
我的实际测试是在www.example.com上完成127.0.0.1不是localhost,所以我不得不将其更改为:“http://127.0.0.1:8000/v1/google/callback“,我不得不在Google控制台中将允许的回调URI更改为这个。
这给我留下了一个问题,它第一次工作,但当用户登录一次,我再试一次,它失败了。看看我能不能把这一点弄清楚。