Docusign /oauth/token端点返回页,而不是json与承载c#
本文关键字:json token oauth 端点 返回 Docusign | 更新日期: 2023-09-27 18:04:56
我在DocuSign API中经历了OAuth2过程,我使用官方文档遵循了所有步骤,但是当我试图执行请求以获得AccessToken时,我收到了一个HTML作为响应,表示"DocuSign暂时不可用"。请稍后再试一次。"虽然http响应是200(OK),但奇怪的是,当我在Postman上使用相同的值进行测试时,我得到了正确的响应。
这是我的代码
public static DocuSignBearerToken GetBearerToken(string AccessCode, bool RefreshToken = false)
{
string AuthHeader = string.Format("{0}:{1}", DocuSignConfig.IntegratorKey, DocuSignConfig.SecretKey);
var client = new RestClient("http://account-d.docusign.com");
client.Authenticator = new HttpBasicAuthenticator(DocuSignConfig.IntegratorKey, DocuSignConfig.SecretKey);
var request = new RestRequest("/oauth/token", Method.POST);
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddHeader("authorization", "Basic " + Base64Encode(AuthHeader));
if(!RefreshToken)
request.AddParameter("application/x-www-form-urlencoded", string.Format("grant_type=authorization_code&code={0}", AccessCode), ParameterType.RequestBody);
else
request.AddParameter("application/x-www-form-urlencoded", string.Format("grant_type=refresh_token&refresh_token={0}", AccessCode), ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var responseString = response.Content;
DocuSignBearerToken Result = JsonConvert.DeserializeObject<DocuSignBearerToken>(responseString);
return Result;
}
好吧,这是尴尬的,阅读DocuSign文档他们从来没有指定如果授权URL是http或https我假设它是http,邮差是足够聪明,以确定http或https时执行请求,我的代码没有,简单地改变授权URL从http://到https://解决错误。
如果您使用Postman进行的测试有效,那么您的代码就有问题。
我们都经历过,包括我!
在这些情况下,我将请求发送给requestb。查看我真正发送到服务器的内容。你会发现有些东西和你通过邮差发送的不一样。