前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >salesforce 登录态持久化之 refresh token接口

salesforce 登录态持久化之 refresh token接口

原创
作者头像
zcx
修改2024-09-13 14:30:25
修改2024-09-13 14:30:25
2150
举报

在 Salesforce 和外部系统集成时,为了实现登录态的持久化,常常需要用到 refresh_token,这是 OAuth 2.0 授权机制中的一部分。以下是简要介绍 refresh_token 接口的功能和作用:

  1. 初次授权与获取 Refresh Token:当用户首次通过 OAuth 2.0 协议授权登录时,Salesforce 会返回一个 access_token(用于访问资源的短期令牌)和一个 refresh_token(用于刷新 access_token 的长期令牌)。
  2. Access Token 过期问题access_token 是有时效性的,通常在一段时间后会过期。为了避免用户频繁地重新登录,refresh_token 可以用于获取一个新的 access_token
  3. 使用 Refresh Token 刷新 Access Token
    • 当外部系统检测到当前的 access_token 过期后,可以向 Salesforce 发送请求,携带 refresh_token 来获取新的 access_token
    • 请求格式通常为一个 POST 请求,包含以下信息:
      • grant_type=refresh_token
      • client_id(应用的 Consumer Key)
      • client_secret(应用的 Consumer Secret)
      • refresh_token(之前获取的 Refresh Token)
  4. 持久化登录状态:通过定期使用 refresh_token 来刷新 access_token,外部系统可以保持与 Salesforce 的登录态,而无需用户再次手动登录。这大大提升了用户体验,尤其是在长时间会话或需要频繁调用 Salesforce API 的场景中。
  5. Refresh Token 的有效期refresh_token 本身通常是长期有效的,但 Salesforce 也可能根据策略对其进行失效处理(例如,用户撤销授权或应用被删除)。

通过 refresh_token,外部系统可以在 access_token 过期后继续保持与 Salesforce 的会话,确保访问权限的持久性。

代码语言:txt
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档