我如何使用 Salesforce OAuth 获取刷新令牌?

How can i get a Refresh token using the Salesforce OAuth?

当我第一次使用 OAuth 向 Salesforce 进行身份验证时,我没有取回刷新令牌,我只取回了访问令牌。因此,如果需要使用以下方式刷新令牌:

var client = new RestClient("https://myOrg.salesforce.com/services/oauth2/token");
var request = new RestRequest("", Method.POST);
request.AddParameter("refresh_token", {currentRefreshToken}, ParameterType.GetOrPost);
request.AddParameter("grant_type", "refresh_token", ParameterType.GetOrPost);
request.AddParameter("client_id", {clientId}, ParameterType.GetOrPost);
request.AddParameter("client_secret", {clientsecret}, ParameterType.GetOrPost);
var response = client.Execute(request);

currentRefreshToken 为 NULL,因为我在初始身份验证响应中没有收到任何刷新令牌。 最初的身份验证调用是

    https://login.salesforce.com/services/oauth2/authorize? client_id={consumer_key}& 
    redirect_uri={callback_url}& response_type=code

并且这不会返回刷新令牌。我如何获得初始刷新令牌?

连接的应用程序必须允许发布刷新令牌(检查“范围”是否包含刷新以及是否没有设置“立即过期刷新令牌”)。

然后你需要请求它,在你的请求中添加可选的 scope=refresh_token 参数。

https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_user_agent_flow.htm&type=5