oauth-2.0 - 具有非交互式服务帐户的 OAuth
问题描述
授权码授予类型是否仅适用于交互式帐户?我正在使用一个似乎不支持客户端凭据授予的 API,除非我回退到基本身份验证(用户:令牌),否则我不知道我们将如何为(对我们而言)是服务帐户的用户进行这项工作.
我正在努力解决的问题是授权码的返回。如果我点击生成的 URL 以请求身份验证代码,我会收到一个对话框,要求我允许/验证访问,并通过接受我返回到带有代码参数的 redirect_uri。这需要人机交互,而在我们的场景中我们不会这样做。身份验证码不应该长期存在,所以我不能只保存它以备将来使用。
解决方案
第一部分,获取授权码,需要人工完成。
授权代码是短暂的,因此您不希望存储授权代码以供以后使用。
值得庆幸的是,您可以用该授权代码换取访问令牌和刷新令牌。尽管访问令牌通常在一个小时左右过期,但刷新令牌通常会在很长一段时间内保持活动状态(这可能因 API 而异)。我目前正在使用的 API 没有记录它何时过期,它可能永远不会过期。
我们只需要注意,如果刷新代码失败/过期,那么我们应该手动转到授权 URL 以获取新的身份验证代码,我们可以用它来换取新的访问令牌和刷新令牌。我们将安全地存储刷新令牌,并将刷新令牌插入我们的自动化中。自动化不会进行authorization_code
授权类型调用(我们仍将保持手动的那部分)并且只会进行refresh_token
授权类型调用(这些可以是自动化的)以及一旦我们有了新的 API 进行实际工作的调用,有效的访问令牌。
推荐阅读
- mysql - 记录每个创建/更新/删除
- excel - 在鼠标选择位置在网页中输入文本
- python - Python MacOS 错误:无法恢复 mtime:/Library/Fonts
- machine-learning - 如何训练模型从图像中识别特定对象?
- html - 如何更改 SVG 中路径的样式?
- python - 有没有办法将用户输入转换为列表?
- android - 显示跑步手图像后,我看不到场景点
- flutter - 动画值与您在 Flutter 中的 PageView 中滚动的距离
- javascript - Discord.js我如何获得公会成员的ID?
- javascript - 如何根据 Express 和 MongoDB 中的角色在将 JSON 数据发送到前端之前对其进行过滤?