如何在没有用户干预的情况下获得OAuth2身份验证

问题描述

正在进行需要OAuth2的API调用。我最初拨打电话并通过网络登录进行授权。然后,我将使用提供的刷新令牌,并使用它在我的应用程序中进行后续调用

问题在于,在随后的调用中,刷新令牌已用完,我得到了一个新令牌。我将此新文件保存在数据库中,然后在下一次调用时使用保存的文件。此功能适用于大约xx个呼叫,然后由于某种原因,刷新令牌失效,我必须去手动通过网络登录再次手动获取一个

我无法得知令牌何时失效或原因。

有没有一种方法可以发送登录信息或OAuth2信息,或者可以使我获得新的有效刷新令牌的东西,而无需我“授权”自己的应用?

我正在使用的API是“持续联系”。

解决方法

OAuth标准基于两种有效期:

访问令牌

这些是短暂的API凭证,常见的生命周期是60分钟。当它们过期时,API客户端会收到带有401状态代码的HTTP响应。然后,客户端可以尝试以静默方式更新访问令牌。

刷新令牌

这些是表示用户会话的长期有效凭证,常见寿命为8或12个小时。在此期间,访问令牌可以静默更新。但是,最终,刷新令牌本身会过期,并且静默续订请求会导致错误,错误代码为 invalid_grant

用户重新授权

有充分的理由让用户重新进行身份验证,我将避免尝试绕过此方法。不建议使用持续很长时间的令牌。只需偶尔进行一次重新认证操作以及诸如密码自动填充之类的功能,可用性就可以很好。

更多详细信息