无法在salesforce OAuth中获取刷新令牌

时间:2018-04-25 10:21:27

标签: asp.net vb.net oauth-2.0 salesforce

我正在关注this link以获取salesforce中的刷新令牌。我的代码看起来像

Dim createClient As New HttpClient
Dim restQuery As String = "https://login.salesforce.com?grant_type=refresh_token&client_id=" & strKey & _
                "&client_secret=" & strSecret & "&refresh_token=" & refreshToken
Dim request = New HttpRequestMessage(HttpMethod.Post, restQuery)
Dim response = Await createClient.SendAsync(request)

我收到回复代码OK但没有获得刷新令牌。

2 个答案:

答案 0 :(得分:0)

我认为某些SalesForce配置没有开箱即用的更新令牌值。因此,如果要避免每次调用都获得新令牌,可以实现自己的刷新令牌版本。例如,在您的代码中设置一个Date-“ expiryDate”,它将是将来的一个日期。对于对SalesForce的每个Rest呼叫,请检查今天的日期是否超过/晚于“ expiryDate”。如果是这样,请请求一个新的访问令牌。否则,您可以继续使用具有相同访问令牌的连接。但是,真正的令牌到期当然是挑战。但是我想如果在accesstoken响应中没有关于令牌何时过期的信息,它将永远过期吗?

答案 1 :(得分:0)

grant_type = refresh_token用于将先前发行的刷新令牌交换为新的访问令牌。要获取刷新令牌,您必须经过一个发布它的oAuth流(也称为授权类型)。您想要的流程取决于您的应用程序;授权代码授予(在Salesforce文档中也称为Web Server流)是常见的建议选项。