使用旧的google,当我将一个用户(之前选择了我的应用程序)发送到auth url时,它会立即将他们重定向回我的应用程序。
现在,对于OAuth2,auth不断向用户请求许可。我读了一些关于这方面的文档,但我所不明白的是这个流程是如何工作的:
我认为这与在步骤1中存储auth令牌或刷新令牌有关,但在步骤3中,我不知道它们是谁,所以如何将它们与适当的auth或刷新令牌匹配以获得有效的访问令牌。
在我的测试中,当我在步骤1中将它们发送到原始的auth url时,它们将再次被请求权限。
编辑:找到解决方案
google在创建auth时默认放置"approval_prompt=force“。
发布于 2012-06-12 19:07:02
是的,正如您已经注意到的,使用approval_prompt=force URL参数将强制每次向用户显示auth对话框。通过简单地删除这个URL参数,用户将不会在随后的auth流上被提示。
如果使用服务器端流(response_type=code)和离线访问(access_type=offline),您将得到的响应略有不同。当用户第一次授权您时(当他看到审批屏幕时),或者如果您通过使用approval_prompt=force强制执行此操作,那么当您交换auth代码时,您将获得一个refresh_token和一个access_token。
但是,每当用户没有在审批屏幕上显示时(当不使用approval_prompt=force时,随后的auth ),当交换auth代码时,您将只被授予一个access_token,而不是refresh_token。因此,如果这是您正在使用的流,如果您希望能够脱机访问用户的数据,则需要确保在第一次获得refresh_token时将其保存在本地供将来使用。
只有当您请求访问另一种类型的数据时,才可能发生这种情况,而不是简单地请求访问auth数据(使用OAuth 2流,您可以请求访问其他数据,例如,联系人API数据、日历API数据、驱动器数据等等)。通常,正常的开放ID流不需要脱机访问。
https://stackoverflow.com/questions/10508557
复制相似问题