在 Salesforce 和外部系统集成时,为了实现登录态的持久化,常常需要用到 refresh_token
,这是 OAuth 2.0 授权机制中的一部分。以下是简要介绍 refresh_token
接口的功能和作用:
access_token
(用于访问资源的短期令牌)和一个 refresh_token
(用于刷新 access_token
的长期令牌)。access_token
是有时效性的,通常在一段时间后会过期。为了避免用户频繁地重新登录,refresh_token
可以用于获取一个新的 access_token
。access_token
过期后,可以向 Salesforce 发送请求,携带 refresh_token
来获取新的 access_token
。grant_type=refresh_token
client_id
(应用的 Consumer Key)client_secret
(应用的 Consumer Secret)refresh_token
(之前获取的 Refresh Token)refresh_token
来刷新 access_token
,外部系统可以保持与 Salesforce 的登录态,而无需用户再次手动登录。这大大提升了用户体验,尤其是在长时间会话或需要频繁调用 Salesforce API 的场景中。refresh_token
本身通常是长期有效的,但 Salesforce 也可能根据策略对其进行失效处理(例如,用户撤销授权或应用被删除)。通过 refresh_token
,外部系统可以在 access_token
过期后继续保持与 Salesforce 的会话,确保访问权限的持久性。
1. refresh_token不是业务接口用到的access_token
2. 使用password认证方式的access_token不能刷新
3. authorization_code认证方式可以拿到refresh_token,可参考上一篇
4. authorization_code认证方式response默认不会返回refresh_token,需要在参数scope加上offline_access
5. refresh_token接口可以实现登录态持久化的功能,具体实现为: 当业务接口判断access_token过期时,
自动调用refresh_token接口,获取新的access_token。
6. 在调用刷新接口时旧的refresh_token第一次获取了新的refresh_token和access_token,此时如果再次用这个
旧的refresh_token,进行第二次刷新会提示失败的同时,也会导致第一次获取的新的access_token也失效。
为避免这个问题,应避免多个线程同时使用同一个refresh_token调用刷新接口,可以考虑缓存和锁。保证
refresh_token唯一、一致。
。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。