2017-06-17 71 views
0

我完全不熟悉OAuth,并且存在工作流问题。我正在使用node/express/passport,并且在请求我的/auth/google端点时成功设置了应用程序以重定向。OAuth 2 - 如何在不提供权限的情况下登录

但是,我始终将其路由到Google权限页面,我必须让我的应用程序访问我的信息。我可以登录/注销的机制是什么,而无需每次都提供访问权限?实质上,我如何让用户无需再次请求权限就可以登录,但仍然让他们通过Google登录?

+0

我会建议读这篇文章,http://nodexperts.com/blog/salesforce-oauth-using-nodejs/, 这不是谷歌,但OAuth的你会得到一些关于它的基本知识和OAuth如何工作的 –

+0

@ myke_11j谢谢我一定会读它! – Corbfon

回答

0

典型的流程是让用户在Google上登录,就像你在做什么一样。一旦他们确认了您的应用程序请求的范围,Google就可以为您的服务器提供一个授权代码,该授权代码可以在未来存储和使用的访问/刷新令牌进行交易。但是,护照应该从你身上抽出很多来回。你在利用this库吗?如果是这样,你是否将访问和刷新令牌存储在你自己的本地数据库中以供重用(或者在至少刷新令牌,以便在需要时可以获得新的有效访问令牌)?

+0

所以这似乎是一条有用的路径!我所做的任何教程都没有提到实际使用访问或刷新令牌。我正在使用您链接的图书馆。我的问题是现在什么时候/如何保存访问和刷新令牌,以及如何将它们提供给护照 – Corbfon

+0

这取决于你打算如何使用令牌。如果这只是让用户使用Google登录的一种方式,那么您应该考虑使用指向数据库中用户的链接的会话,以及存储与该用户关联的刷新/访问令牌的位置。由于某种原因,该示例没有显示存储令牌,但如果您不希望用户每次都登录,则必须执行此操作。安全地,最好。然后,您需要使用[this](https://developers.google.com/identity/protocols/OAuth2UserAgent#validate-access-token)等来验证链接的令牌。 – dvlsg

+0

您还需要查看'passport'中的'deserializeUser'和'serializeUser'方法,因为这些方法通常是您在'passport'的上下文中将用户进出数据库的方式。 [Docs here](http://passportjs.org/docs/configure),但您必须向下滚动一下才能看到这些方法。 – dvlsg

相关问题