繁体   English   中英

Docusign / oauth / token端点返回页面,而不是带有承载C#的json

[英]Docusign /oauth/token endpoint return page instead of json with bearer C#

我在DocuSign API中进行了OAuth2处理,我使用官方文档按照所有步骤进行操作,但是当我尝试执行请求以获取AccessToken时,我收到了HTML作为响应,并指出了类似“ DocuSign暂时不可用。请稍后重试。” 尽管http响应为200(确定),但奇怪的是,当我在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;
    }

好的,这很尴尬,阅读他们从未指定授权URL是http或https的DocuSign文档(我以为它是http),邮递员足够聪明,可以在执行请求时确定http或https,而我的代码却没有,只需更改从http://到https://的授权URL解决了该错误。

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

我们都去过那里,包括我在内!

在这些情况下,我将请求发送到requestb.in,以查看我实际发送到服务器的内容。 您会发现与通过邮递员发送的邮件有所不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM