我正在尝试了解OAuth 2.0( SERVER SIDE FLOW )。让我们以Google联系人API的简单示例为例。
根据规格,我已经在Google上注册了我的应用,并且拥有客户端ID和客户端密码。此外,我还提到了回调网址。
获取访问令牌需要我做
将用户重定向到具有所需查询字符串和标题的特定网址,如Google网站上的OAuth文档中所述(https://accounts.google.com/o/oauth2/auth bla bla stuff)
在用户输入他们的凭据后,他们会被发送回我在APP中已经注册的APP中提到的回调网址。这里查询字符串参数& code = 4 / P7q7W91a-oMsCeLvIaQm6bTrgtp6 bla bla也附加到回叫URL。因此现在有了授权码
现在,我使用我在上一步中获得的授权码向https://accounts.google.com/o/oauth2/token发送请求,以便获取访问令牌和刷新令牌。
一旦我获得了这个“访问令牌”,我就可以访问(比如联系API和获取用户联系人)
到目前为止一切都很好。我也理解访问令牌的生命周期有限,我们可以使用“刷新令牌”获取新的访问令牌。
A.作为开发人员,我有责任存储并检查“访问令牌”是否有效吗?
B中。如果我的网站是一个“使用Google / FB / twitter登录”帐户的公共网站,我怎么知道它是2天后返回网站的同一个用户,我不需要他要求登录,而是用户应该自动登录到网站? cauz我不希望他通过授权程序,因为他们已经授权我的应用程序。
E.G:我已经使用我的FB登录登录TechCrunch网站,可以评论文章。现在即使在1周后如果我访问TechCrunch,我也不必再次登录。他们怎么知道我和我已经认证了?
答案 0 :(得分:16)
使用OAuth 2.0时,您会获得一个访问令牌,其中包含过期时间。您可以跟踪它何时到期,或者您可以继续使用它,直到您收到INVALID_TOKEN错误。然后,您需要调用刷新令牌服务以获取新的访问令牌。您的刷新令牌在撤销之前是好的。
这是OpenID,而不是OAuth。流程类似,但用于将用户登录到您的服务中。 OAuth用于从其他帐户检索用户的数据。