【发布时间】:2021-01-19 02:03:28
【问题描述】:
我试图获得一个access token 来为 docuSign 进行 API 调用。
为此,我编写了以下代码:
string CLIENT_ID = "5a63c30f-...-08453c10a995";
string SECRET_KEY = "ef7e08fc-....-321444f9e825";
byte[] ENCODED_KEYS = System.Convert.ToBase64String(Encoding.GetEncoding(28591).GetBytes($"{ CLIENT_ID }:{ SECRET_KEY }"));
string CONTENT_TYPE = "application/x-www-form-urlencoded";
string AUTHORIZATION = $"Basic {ENCODED_KEYS}";
var rest = new RestSharp.RestRequest();
rest.Method = RestSharp.Method.POST;
rest.AddHeader("Content-Type", CONTENT_TYPE);
rest.AddHeader("Authorization", AUTHORIZATION);
rest.AddParameter(new RestSharp.Parameter("code", CODE, RestSharp.ParameterType.RequestBody));
rest.AddParameter(new RestSharp.Parameter("grant_type", "authorization_code", RestSharp.ParameterType.RequestBody));
rest.AddParameter(new RestSharp.Parameter("redirect_uri", REDIRECT_URI, RestSharp.ParameterType.RequestBody));
rest.RequestFormat = RestSharp.DataFormat.Json;
string API_PATH = "https://account-d.docusign.com/oauth/token";
var client = new RestSharp.RestClient(API_PATH);
var result = client.Execute(rest);
但是在Postman中运行同样的东西时,它运行成功了。
真的很伤我的心,有什么线索吗?
编辑:非常重要
我取消选中邮递员中的Content-Type
然后当我运行它时,在 Postman 中出现同样的错误。 发生了什么
【问题讨论】:
-
你的代码中应该是
string ENCODED_KEYS而不是byte[] ENCODED_KEYS吗? -
不,应该只是字节。
-
我不太明白您如何让
ToBase64String返回byte[],但无论如何我建议将 Postman 请求与 RestSharp 请求进行比较,看看有什么区别。 This answer 到一个类似的问题概述了一些你可以检查的事情。
标签: c# postman docusignapi restsharp