gpt4 book ai didi

c# - 通过 C# 使用 OAuth2 RESTful 服务时授权错误 500

转载 作者:可可西里 更新时间:2023-11-01 07:48:11 25 4
gpt4 key购买 nike

我目前的工作是使用 OAuth2 的 RESTful API。目前我弄清楚了如何获取访问 token ,并且在我使用 chrome 扩展 Rest Console 时它工作正常,但是当我尝试从我的应用程序执行此操作时,我总是收到我发送无效 OAuth 请求的错误。您可以在下面看到我尝试使用 API 的三种方式,但都没有成功。该页面始终返回错误 500。如果我遗漏了一些重要信息,我们将不胜感激。

    var auth = "Bearer " + item.access_token;


/* First Attempt */
var client = new RestClient("http://<link>");
var request = new RestRequest("sample", Method.GET);
request.AddHeader("Authorization", auth);
request.AddHeader("Content-Type", "application/json;charset=UTF-8");
request.AddHeader("Pragma", "no-cache");
request.AddHeader("User-Agent", "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36");
request.AddHeader("Accept", "application/json");
request.RequestFormat = DataFormat.Json;
var response = client.Execute(request);
var content = response.Content;





/* Second Attempt */
string sURL = "http://<link>/sample";

string result = "";

using (WebClient client = new WebClient())
{
client.Headers["Authorization"] = auth;
client.Headers["Content-Type"] = "application/json;charset=UTF-8";
client.Headers["Pragma"] = "no-cache";
client.Headers["User-Agent"] = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
client.Headers["Accept"] = "application/json";

byte[] byteArray = Encoding.UTF8.GetBytes(parameters);

var result1 = client.DownloadString(sURL);
}


/* Third Attempt */
var request = (HttpWebRequest)WebRequest.Create(sURL);
request.Method = "GET";
request.ContentType = "application/json;charset=UTF-8";
request.Accept = "application/json";
request.Headers["Authorization"] = auth;
request.UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
string content;
HttpStatusCode statusCode;
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
var contentType = response.ContentType;
Encoding encoding = null;
if (contentType != null)
{
var match = Regex.Match(contentType, @"(?<=charset\=).*");
if (match.Success)
encoding = Encoding.GetEncoding(match.ToString());
}

encoding = encoding ?? Encoding.UTF8;

statusCode = ((HttpWebResponse)response).StatusCode;
using (var reader = new StreamReader(stream, encoding))
content = reader.ReadToEnd();
}

--------编辑--------

对于第一次尝试,我还尝试将身份验证添加到客户端变量 client.Authenticator = Authenticate; 其中 OAuth2AuthorizationRequestHeaderAuthenticator Authenticate = new OAuth2AuthorizationRequestHeaderAuthenticator(item.access_token, item.token_type);

最佳答案

代码似乎是正确的。您所做的失败尝试表明问题出在 token 而不是代码。不记名 token 有到期时间。因此,像您的 token 这样的 sems 在您第一次使用 chrome REST 控制台扩展获得它和编写代码之间过期。但是这里的奇怪情况是你得到的 500 错误代码。 401 是 token 过期或不存在时的标准响应。 500 错误代码始终表示服务器错误。

关于c# - 通过 C# 使用 OAuth2 RESTful 服务时授权错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com