使用旧的谷歌openid,当我发送一个用户(之前选择加入我的应用程序)到auth url时,它会立即将它们重定向回我的应用程序.
现在,使用OAuth2,auth url不断询问用户是否允许.我读了一些关于这个的文档,但我没有得到的是我应该如何工作:
我认为这与在步骤1中存储身份验证令牌或刷新令牌有关,但在步骤3中,我不知道他们是谁,所以我如何将它们与正确的身份验证或刷新令牌匹配以获得有效访问令牌.
在我的测试中,当我在步骤1中将它们发送到原始身份验证URL时,会再次要求他们获得权限.
编辑:找到解决方案
创建auth url时,google-api默认设置"approval_prompt = force".
Nic*_*ier 26
是的,因为您已经注意到使用approval_prompt = force URL参数将强制每次向用户显示auth对话框.只需删除此URL参数,就不会在后续的身份验证流程中提示用户.
如果您使用服务器端流程(response_type = code)和脱机访问(access_type = offline),您将获得的响应略有不同.用户第一次授权您(当他看到批准屏幕时)或者如果您通过使用approval_prompt = force强制执行此操作,那么当您交换身份验证代码时,您将被授予refresh_token和access_token.
但是,每次未向用户显示批准屏幕时(未使用approval_prompt = force时的后续身份验证),在交换身份验证代码时,您将只被授予access_token,而不是refresh_token.因此,如果这是您正在使用的流程,并且如果您希望能够脱机访问用户的数据,则需要确保在本地保存refresh_token以供将来使用,当您第一次获得它时.只有当您请求访问其他类型的数据而不仅仅是auth数据时,才会发生这种情况(使用OAuth 2流,您可以请求访问其他数据,例如Contacts API数据,Calendar API数据,驱动器数据等...通常,常规的Open ID流不需要离线访问.
| 归档时间: |
|
| 查看次数: |
16522 次 |
| 最近记录: |