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 /oauth/token端点返回页,而不是json与承载c#

好吧,这是尴尬的,阅读DocuSign文档他们从来没有指定如果授权URL是http或https我假设它是http,邮差是足够聪明,以确定http或https时执行请求,我的代码没有,简单地改变授权URL从http://到https://解决错误。

如果您使用Postman进行的测试有效,那么您的代码就有问题。

我们都经历过,包括我!

在这些情况下,我将请求发送给requestb。查看我真正发送到服务器的内容。你会发现有些东西和你通过邮差发送的不一样。