Oauth 2.0 谷歌oauth2和SPA

Oauth 2.0 谷歌oauth2和SPA,oauth-2.0,oauth,google-oauth,csrf,csrf-token,Oauth 2.0,Oauth,Google Oauth,Csrf,Csrf Token,我有一个api和一个完全独立的Angular SPA,它们有不同的来源/主机,我发现实现是这样的:用户进入SPA,SPA从api获得一个CSRF令牌(我将有一个生成此类令牌的端点),在用户同意Google Auth使用授权码和状态CSRF令牌重定向回SPA后,用户单击“使用Google登录”按钮,将其重定向至Google的同意页面(CSRF令牌将作为状态字段发送,客户端id也将发送),在检查CSRF令牌后,SPA将信息再次发送到api的另一个端点,当api获取该信息时,SPA将授权码连同客户端i

我有一个api和一个完全独立的Angular SPA,它们有不同的来源/主机,我发现实现是这样的:用户进入SPA,SPA从api获得一个CSRF令牌(我将有一个生成此类令牌的端点),在用户同意Google Auth使用授权码和状态CSRF令牌重定向回SPA后,用户单击“使用Google登录”按钮,将其重定向至Google的同意页面(CSRF令牌将作为状态字段发送,客户端id也将发送),在检查CSRF令牌后,SPA将信息再次发送到api的另一个端点,当api获取该信息时,SPA将授权码连同客户端id和密码(该密码仅由api知道)一起发送给google auth api,以获取访问令牌,然后SPA从google获取用户的电子邮件,因此现在它知道该用户是谁,api为该用户生成一个JWT令牌,并将其返回给SPA

这个实现足够安全吗?我错过什么了吗?我处理CSRF部分的方式足够好吗