【发布时间】:2015-03-16 06:08:00
【问题描述】:
如果应用程序无法访问浏览器控件或 http 上下文,是否可以刷新令牌?我有一个 WinForm 可以让用户登录并获得同意,然后它将令牌传递给 Windows 服务,以便可以将文件上传到 OneDrive。当令牌过期时,似乎所有刷新令牌的方法都需要回调 URL。
【问题讨论】:
如果应用程序无法访问浏览器控件或 http 上下文,是否可以刷新令牌?我有一个 WinForm 可以让用户登录并获得同意,然后它将令牌传递给 Windows 服务,以便可以将文件上传到 OneDrive。当令牌过期时,似乎所有刷新令牌的方法都需要回调 URL。
【问题讨论】:
如果您已请求 wl.offline_access 范围并且您正在使用 OAuth 2.0 中的授权代码授权流程,则可以执行此操作。用户通过 OAuth 登录后,您将收到一个有效期为 1 小时的access_token 和一个长期有效的refresh_token。
每次您的服务需要代表用户完成工作时,您可以将refresh_token 兑换为新的access_token 和refresh_token,然后使用access_token 完成工作。确保您保存新的refresh_token 并返回,以确保延长到期时间。
通过这种方式,您可以拥有一个长期代表用户执行操作的服务,而无需用户再次登录。但是,refresh_token 可能会过期或失效,因此您需要处理无法兑换refresh_token 的情况。
【讨论】: