我正在开发一个C#应用程序,它需要连接一个基于Web的API。当连接API时,它做的第一件事是尝试从授权服务器获取授权码。使用RestSharp,我的代码如下:
static string GetAuthCode(string authUri, string clientId, string scope, Guid state, string callbackUri)
{
var client = new RestClient(authUri);
var request = new RestRequest("", Method.Post);
client.Options.MaxTimeout = -1;
request.AddParameter("client_id", clientId);
request.AddParameter("response_type", "code");
request.AddParameter("scope", scope);
request.AddParameter("state", state);
request.AddParameter("redirect_uri", callbackUri);
RestResponse response = client.Execute(request);
if (response.IsSuccessful)
{
string code = HttpUtility.ParseQueryString(response.ResponseUri.Query).Get("code");
return code;
}
else
throw new Exception(response.Content);
}
当我调用这个方法时,响应是成功的,但是我希望得到的授权码会被附加到响应的ResponseUri属性(在它的Query属性中)。但是它没有。ResponseUri属性被设置为授权Uri(authUri)。我是否找错了授权码的位置?我在哪里可以找到实际的授权码?
1条答案
按热度按时间bnl4lu3b1#
它应该在查询参数中:
如果资源所有者赠款访问请求,则授权
服务器发出授权码并通过以下方式将其传递给客户端
将以下参数添加到的查询组件
使用“应用程序/x-www-form-urlencoded”格式的重定向URI,按照附录B:
4.1授权码授予- 4.1.2授权响应