首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VBA中获取新的访问令牌--翻译PowerShell curl.exe命令

在VBA中获取新的访问令牌--翻译PowerShell curl.exe命令
EN

Stack Overflow用户
提问于 2022-10-22 16:41:42
回答 1查看 35关注 0票数 -1

我在PowerShell中运行了以下命令:curl.exe -X POST https://app.inventorum.com/api/auth/token/ -u '$CLIENTID:$CLIENTSECRET' -d 'grant_type=refresh_token&refresh_token=$REFRESHTOKEN'

它返回一个有效的新刷新和承载令牌。但在我的一生中,我无法在Excel中的VBA中完成这一任务:

代码语言:javascript
复制
Private Function getAccessToken() As String
Dim httpRequest As New WinHttpRequest
Dim apiUrl As String

apiUrl = "https://app.inventorum.com/api/auth/token/"

httpRequest.Open "POST", apiUrl
httpRequest.SetCredentials clientId, clientSecret, 0
httpRequest.send "grant_type=refresh_token&refresh_token=" & refreshToken

Debug.Print httpRequest.responseText
End Function

返回的响应:{"error": "unsupported_grant_type"}

我不知道我做错了什么。我也无法在失眠症中做到这一点,但这是另外一个问题。

EN

回答 1

Stack Overflow用户

发布于 2022-10-22 20:58:47

你可以试试这样的东西。这是一个C#实现。

代码语言:javascript
复制
using System.Net.Http.Headers;

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.inventorum.com/api/auth/token/");

request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("$CLIENTID:$CLIENTSECRET")));

request.Content = new StringContent("grant_type=refresh_token&refresh_token=$REFRESHTOKEN");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74165333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档