gpt4 book ai didi

salesforce - 如何获得更永久的访问 token

转载 作者:行者123 更新时间:2023-12-03 16:07:09 27 4
gpt4 key购买 nike

文档位于 http://www.salesforce.com/us/developer/docs/api_rest/index_Left.htm#CSHID=quickstart_code.htm|StartTopic=Content%2Fquickstart_code.htm|SkinName=webhelp

Salesforce uses authentication to allow users to securely access data without having to reveal username and password credentials.



但据我所知,我可以运行以获取 access_token 的唯一命令是像这样使用我同事的用户名和密码
curl -d "username=yyyyyyy" -d "password=xxxxxxx" -d "client_id=zzzzzz" -d "client_secret=dddddddddd" -v -d "grant_type=password" https://login.salesforce.com/services/oauth2/token

当 access_token 不断过期时,我必须重新生成它。如果没有,我的同事可以只生成一次 token 并将其交给我并完成它。

我该怎么做才能让他永远不必给我他的用户名/密码,并且我的应用程序将继续工作,直到他从 salesforce 中删除该应用程序(这有望使 client_id 和 client_secret 无效)。

(这至少是大多数 API 的工作方式,因此用户不必向开发人员提供他们的用户名和密码,也不需要在生产机器上存储用户名和密码。)那么我们如何使其工作?或者文档完全错误,我确实需要用户的登录名/密码来访问数据,即使那一行另有说明。

最佳答案

好吧,这很烦人。在 OAuth2 中,想要访问所有数据而不管用户和用户是否登录的应用程序的正确方法是 grant_type=client_credentials,它在 Salesforce 上不存在。

解决方法如下

  • 在 GUI 中,编辑您的应用程序并在“API(启用 OAuth 设置)”中添加“访问和管理您的数据(api)或完全访问并代表您随时执行请求(刷新 token )”
  • 在 GUI 中,将回调 url 设置为 https://localhost/oauth (这是一个黑客,我们稍后会利用它来发挥我们的优势)
  • 现在,转到 url(用您的数据填写参数)https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id=YOURCLIENTID&redirect_uri=https%3A%2F%2Flocalhost%2Foauth
  • 您的浏览器会将您重定向到 https://localhost/oauth?code=YOURCODE注意:在您需要重复步骤 3 并再次运行之前,此代码只能使用一次。
  • 使用步骤 4 中的代码(您的代码)运行 POST 请求到 url https://login.salesforce.com/services/oauth2/token使用grant_type=authorization_code&code=YOURCODE&client_id=YOURCLIENTID&client_secret=YOURSECRET&redirect_uri=https%3A%2F%2Flocalhost%2Foauth
  • 正文中的数据

    注意:有一些 %3D s 在 YOURCODE ....你不需要修改它们并将它们转换为 =你可以保持原样。

    这现在会返回一个您可以使用的刷新 token 和您可以使用的当前访问 token 。

    现在,只需将刷新 token 保存到您的数据库中(我希望它几乎可以持续到有人删除应用程序并且时间会告诉我猜)。

    关于salesforce - 如何获得更永久的访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22642309/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com