【发布时间】:2020-09-02 17:45:34
【问题描述】:
我尝试了不同的方式来传递header 和content,但每次都获得bad request 以从docusign 获取访问令牌。
以下是在向authorization code 发出请求后调用的回调 Web API 方法:
[HttpGet]
[AllowAnonymous]
[Route("CallBack")]
public string Callback()
{
string accessToken = "";
try
{
var response = Request.Query;
if (Request.Query != null && Request.Query.Keys != null && Request.Query.Keys.Count > 0)
{
var authorizationCode = Request.Query["code"];
/*
Request => POST https://account-d.docusign.com/oauth/token
Content-Type: application/x-www-form-urlencoded
Header => Authorization: Basic BASE64_COMBINATION_OF_INTEGRATOR_AND_SECRET_KEYS
Data => grant_type=authorization_code&authorization_code=YOUR_AUTHORIZATION_CODE
*/
//Body
var keyValues = new Dictionary<string, string>();
keyValues.Add("grant_type", "authorization_code");
keyValues.Add("authorization_code", authorizationCode);
var bodyContent = new FormUrlEncodedContent(keyValues);
//Header
//Content-Type: application/x-www-form-urlencoded
//Authorization: Basic BASE64_COMBINATION_OF_INTEGRATOR_AND_SECRET_KEYS
string base64Decoded = configuration.IntegrationKey + ":" + configuration.SecretKey;
string base64Encoded;
byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(base64Decoded);
base64Encoded = System.Convert.ToBase64String(data);
var client = new System.Net.Http.HttpClient();
client.BaseAddress = new Uri("https://account-d.docusign.com");
var request = new System.Net.Http.HttpRequestMessage(HttpMethod.Post, "https://account-d.docusign.com/oauth/token");
request.Content = bodyContent;
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
request.Headers.Authorization = new AuthenticationHeaderValue("Basic", base64Encoded);
var accessTokenresponse = client.SendAsync(request).Result;
//Set access token
//accessToken
}
}
catch (Exception ex)
{
}
return accessToken;
}
【问题讨论】:
-
是的,但我不想配置那么多东西。只是想在收到授权码后明确获取访问令牌。
-
我的错,
keyValues.Add("authorization_code", authorizationCode)应该是keyValues.Add("code", authorizationCode) -
你能用 fiddler 来追踪调用吗?错误请求表明 URL 错误或一些非常基本的信息,通过查看您的代码我看不出有什么问题
标签: c# asp.net-core-webapi docusignapi .net-core-2.1