我正在尝试理解OAuth 2.0(服务器端流程)。让我们以Google联系人API的简单示例为例。
根据规范,我已经在Google上注册了我的应用程序,并获得了客户端ID和客户端密钥。我还提供了回调URL。
获取访问令牌需要我执行以下步骤:
按照Google站点上OAuth文档中指定的要求,重定向用户到特定的URL,其中包含所需的查询字符串和标头(https://accounts.google.com/o/oauth2/auth bla bla stuff)。
用户输入凭据后,将返回到我已在Google注册的应用程序中指定的回调URL。此处还会将查询字符串参数&code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp6 bla bla添加到回调URL中。因此,我现在拥有授权代码。
现在,我向https://accounts.google.com/o/oauth2/token发送一个请求,其中包含我在上一步中获得的授权代码。这样,我就可以获得访问令牌和刷新令牌。
一旦我获得了这个“访问令牌”,我就可以访问(比如联系人API并获取用户联系人)。
到这里为止,一切都很好。我还了解到访问令牌的有效期有限,我们可以使用“刷新令牌”来获取新的访问令牌。
A.作为开发人员,我是否负责存储和检查“访问令牌”是否有效?
B.如果我的网站是一个公共网站,支持“使用Google/Facebook/Twitter账户登录”,我该如何知道两天后返回网站的是同一用户,并且我不需要要求他重新登录,而是应该自动登录到网站?因为我不想让他重复授权给我的应用程序。
比如说:我通过我的FB登录TechCrunch网站并可以对文章进行评论。现在,即使过了一周,如果我再访问TechCrunch,我也不需要再次登录。他们是怎样知道这是我,而且我已经过身份验证的呢?