【问题标题】:docuSign oAuth Invalid grant C# but works in PostmandocuSign oAuth 无效授权 C# 但在 Postman 中工作
【发布时间】: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


【解决方案1】:

我相信您添加的参数是请求正文的一部分,而不是 URL 参数。 比较请求是如何在 Postman 中完成的,因为它是正文的一部分。

我强烈建议您为此使用 .NET 库,而不是自己运行此代码。可以使用 C# SDK 结合 .NET Core OAuth 或 .NET Framework 来执行此操作,而无需自己编写代码。

【讨论】:

    猜你喜欢
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多