gpt4 book ai didi

c# - Twitterizer- 远程服务器返回错误 : (401) Unauthorized

转载 作者:行者123 更新时间:2023-11-30 14:01:05 26 4
gpt4 key购买 nike

我正在关注 Ricky 的 Twitterizer example (我做了一些修改),但是当我尝试发送身份验证请求时出现“401 Unauthorized”异常:

{Twitterizer.TwitterizerException: The remote server returned an error: (401) Unauthorized. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.
at System.Net.HttpWebRequest.GetResponse()
at Twitterizer.WebRequestBuilder.ExecuteRequest()
at Twitterizer.OAuthUtility.GetRequestToken(String consumerKey, String consumerSecret, String callbackAddress)
--- End of inner exception stack trace ---
at Twitterizer.OAuthUtility.GetRequestToken(String consumerKey, String consumerSecret, String callbackAddress)
at MyProject.Controllers.AccountController.Authenticate(String oauthToken, String oauthVerifier, String returnUrl) in C:\path\to\my\website\Controllers\AccountController.cs:line 78}

我有私有(private)成员变量,其中包含我的消费者 key 和消费者 secret :

// I obtain my consumer key and the consumer secret from the web config
private static readonly string _twitterConsumerKey = WebConfigurationManager.AppSettings["TwitterConsumerKey"];
private static readonly string _twitterConsumerSecret = WebConfigurationManager.AppSettings["TwitterConsumerSecret"];

我还有一个处理登录的 Controller :

// GET: Account/Logon/
[HttpPost]
public ActionResult LogOn(string returnUrl)
{
return Authenticate(string.Empty, string.Empty, HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]));
}

//private ActionResult
private ActionResult Authenticate(string oauthToken, string oauthVerifier, string returnUrl)
{
if (string.IsNullOrEmpty(oauthToken) || string.IsNullOrEmpty(oauthVerifier))
{
UriBuilder builder = new UriBuilder(this.Request.Url);
builder.Query = string.Concat(
builder.Query,
string.IsNullOrEmpty(builder.Query) ? string.Empty : "&",
"returnUrl=",
returnUrl);

try
{
string token = OAuthUtility.GetRequestToken(
_twitterConsumerKey,
_twitterConsumerSecret,
builder.ToString()).Token; // <-- Throws the exception

return Redirect(OAuthUtility.BuildAuthorizationUri(token, true).ToString());
}
catch (Exception e)
{
ViewBag.Error = e.ToString(); // 401 Unauthorized
return View();
}
}

OAuthTokenResponse tokens = OAuthUtility.GetAccessToken(
_twitterConsumerSecret,
_twitterConsumerSecret,
oauthToken,
oauthVerifier);

// Save the user details and set the authentication (cookie)
// ...
// ...
// ...

if (string.IsNullOrEmpty(returnUrl))
return Redirect("/");
else
return Redirect(returnUrl);
}

请注意,我删除了一些与错误无关的代码。上面的代码单独导致异常。需要注意的一件事是我的 returnUrl 是空的(尽管如果我也提供 returnUrl 也会发生同样的事情);其他一切似乎都很好。 HttpWebRequest 看起来像这样:

Address = {https://api.twitter.com/oauth/request_token?oauth_callback=http://localhost:24465/Account/LogOn?returnUrl=}

关于可能导致此问题的原因有什么想法吗?

最佳答案

登录 dev.twitter.com 并仔细检查您的应用程序是否为 Web 应用程序。为了成为一个网络应用程序,你必须在那里提供一个回调 url,即使你要在运行时提供一个“真正的”回调。

仅供引用,您不能为注册的回调 url 提供“localhost”,但您可以使用 127.0.0.1。

关于c# - Twitterizer- 远程服务器返回错误 : (401) Unauthorized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9085370/

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