使用React前端和Rails后端的带有Google Calendar API的客户端OAuth

Spencercdixon

所以我正在尝试使用google oauth为我的用户获取刷新令牌(实际上不使用google oauth来保存用户)。当我使用Google api的客户端OAuth时,一切正常,但是当您进行握手时,它们不提供刷新令牌,只有access_token。我需要一个持久的refresh_token,因为我将向用户google日历发出很多请求。

因此,我在我的rails服务器上设置了omniauth,使流程如下所示:

用户点击向Google进行身份验证(客户端)->

弹出屏幕转到后端服务器(localhost:3001/users/auth/google_oauth2)->

后端Rails服务器重定向到Google进行身份验证->

他们通过Google进行身份验证,并重定向到后端服务器的回调(localhost:3001/users/auth/google_oauth2/callback)->

后端服务器为适当的用户保存令牌,然后重定向回客户端应用程序localhost:3000(无需在客户端上做任何事情,只需要将令牌保存在我的服务器上以备将来使用)

但是我确实需要知道身份验证是成功的,因此我可以在react / redux中调度适当的操作。在redux-auth中,它们检查popup.locationURI中的access_token 问题是,当我使用此服务器端弹出流时,出现此讨厌的http / https错误:

安全错误(原始图片:http//imgur.com/v5NgIGr

如果不是重定向到客户端,而是重定向到后端服务器中的视图,则可以在该页面上有一个脚本,该脚本window.close()可以正常工作,但对我来说似乎很笨拙。我在考虑的另一个潜在解决方案是尝试使用window.postMessageapi,但我不知道该浏览器是否具有强大的浏览器支持/也似乎很hack。我可以从弹出窗口向另一个窗口(主客户端应用程序)发出一条消息,说oauth成功,因此我的反应代码可以执行任何所需的操作。

我觉得我只是完全错了整个流程,或者缺少明显的东西。

我还觉得,如果我在所有内容上都使用HTTPS,那么自从100%成为客户端之前,弹出窗口就可以很好地工作了,而我没有收到此SecurityError。我花了一些时间来弄清楚如何使用https获取我的webpack开发服务器,并尝试在rails上做同样的事情(认为我在rails方面做错了),但是仍然无法正常工作。也觉得我不需要在所有开发服务器上强制使用HTTPS来使其正常工作...

如果有人有任何想法或可以给我一些指导,将不胜感激!!

贾兹卜

您正在以错误的方式处理此问题。Google的身份验证及其API确实有令人困惑的文档。我也遇到类似的情况,花了很多时间后,我找到了正确的方法。

从您的问题来看,我认为这似乎是相关的链接:https : //developers.google.com/identity/sign-in/web/server-side-flow

然后,这是您的流程的样子:

在此处输入图片说明

要将其映射到您的问题,这是您要执行的操作:

  1. 用户点击向Google进行身份验证(客户端)
  2. 客户请求Google授予包含您的范围的授权,并获得一次授权authorization code
  3. 客户端将此授权代码发送到您的ruby服务器。
  4. Ruby服务器使用授权代码与之交换access_token并持久化授权代码refresh_token,您将在随后的Google api请求中使用该授权代码

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用React前端和Rails后端的带有Google Calendar API的客户端OAuth

来自分类Dev

带有insert_calendar方法的Google api ruby客户端问题

来自分类Dev

在面向.NET 3.5的Winforms上使用Google Calendar API客户端库v3?

来自分类Dev

如何使用PHP API客户端检索我公司的Google Calendar Resources?

来自分类Dev

使用PHP客户端设置Google Calendar API的推送通知

来自分类Dev

使用Java客户端库从Google Calendar API v3查询事件?

来自分类Dev

从Google Calendar API v2迁移到v3-客户端授权

来自分类Dev

Google OAuth Java客户端和Twitter API

来自分类Dev

Google API客户端OAuth始终返回已取消

来自分类Dev

Google Calendar API v3的Python客户端库插入事件引发“缺少结束时间”错误

来自分类Dev

对Google API python客户端的App引擎调用返回403,带有@oauth_required

来自分类Dev

抄写OAuth Java Google日历api。没有客户端库

来自分类Dev

Google API Ruby客户端-具有OAuth 2.0的单用户

来自分类Dev

如何使用Google API Python客户端在OAUTH之后获取用户电子邮件

来自分类Dev

如何使用 OAuth 2.0 客户端 ID 调用 Google Drive API?

来自分类Dev

Keycloak前端和后端客户端

来自分类Dev

Google Analytics(分析)嵌入式API-找不到OAuth客户端

来自分类Dev

Google API客户端和Cronjob

来自分类Dev

如何使用OAuth 2.0实施REST API以进行多个客户端访问

来自分类Dev

如何使用OAuth 2.0实施REST API以进行多个客户端访问

来自分类Dev

带有Spring的OAuth2的Android客户端

来自分类Dev

了解OAuth 2.0中客户端ID和客户端密码的需求

来自分类Dev

OAuth2 客户端 ID 和客户端密钥的安全性

来自分类Dev

Google API客户端的多个实例?

来自分类Dev

Google API PHP客户端授权

来自分类Dev

如何从客户端使用Twitter API?

来自分类Dev

使用MarkLogic Java客户端API

来自分类Dev

Java客户端使用API

来自分类Dev

找不到OAuth客户端-Google Apps脚本-BigQuery

Related 相关文章

  1. 1

    使用React前端和Rails后端的带有Google Calendar API的客户端OAuth

  2. 2

    带有insert_calendar方法的Google api ruby客户端问题

  3. 3

    在面向.NET 3.5的Winforms上使用Google Calendar API客户端库v3?

  4. 4

    如何使用PHP API客户端检索我公司的Google Calendar Resources?

  5. 5

    使用PHP客户端设置Google Calendar API的推送通知

  6. 6

    使用Java客户端库从Google Calendar API v3查询事件?

  7. 7

    从Google Calendar API v2迁移到v3-客户端授权

  8. 8

    Google OAuth Java客户端和Twitter API

  9. 9

    Google API客户端OAuth始终返回已取消

  10. 10

    Google Calendar API v3的Python客户端库插入事件引发“缺少结束时间”错误

  11. 11

    对Google API python客户端的App引擎调用返回403,带有@oauth_required

  12. 12

    抄写OAuth Java Google日历api。没有客户端库

  13. 13

    Google API Ruby客户端-具有OAuth 2.0的单用户

  14. 14

    如何使用Google API Python客户端在OAUTH之后获取用户电子邮件

  15. 15

    如何使用 OAuth 2.0 客户端 ID 调用 Google Drive API?

  16. 16

    Keycloak前端和后端客户端

  17. 17

    Google Analytics(分析)嵌入式API-找不到OAuth客户端

  18. 18

    Google API客户端和Cronjob

  19. 19

    如何使用OAuth 2.0实施REST API以进行多个客户端访问

  20. 20

    如何使用OAuth 2.0实施REST API以进行多个客户端访问

  21. 21

    带有Spring的OAuth2的Android客户端

  22. 22

    了解OAuth 2.0中客户端ID和客户端密码的需求

  23. 23

    OAuth2 客户端 ID 和客户端密钥的安全性

  24. 24

    Google API客户端的多个实例?

  25. 25

    Google API PHP客户端授权

  26. 26

    如何从客户端使用Twitter API?

  27. 27

    使用MarkLogic Java客户端API

  28. 28

    Java客户端使用API

  29. 29

    找不到OAuth客户端-Google Apps脚本-BigQuery

热门标签

归档