Я начинаю разрывать волосы с помощью Twitter и пытаться подписать пользователя! У меня есть Facebook, Google, OpenId все работает отлично, просто Twitter является PAIN.DotNetOpenAuth Twitter Аутентификация Возврат 401 Несанкционированный
Я постоянно получаю 401 Несанкционированный, когда я пытаюсь запустить свой код, и для жизни меня не может понять, почему.
Я создал твиттер-клиент, и я использую его с помощью InMemoryTokenManager из решения DotNetOpenAuth. Мой Twitter клиент здесь
public class TwitterClient
{
private string UserName { get; set; }
private static readonly ServiceProviderDescription ServiceDescription =
new ServiceProviderDescription
{
RequestTokenEndpoint = new MessageReceivingEndpoint(
"https://api.twitter.com/oauth/request_token",
HttpDeliveryMethods.GetRequest |
HttpDeliveryMethods.AuthorizationHeaderRequest),
UserAuthorizationEndpoint = new MessageReceivingEndpoint(
"https://api.twitter.com/oauth/authorize",
HttpDeliveryMethods.GetRequest |
HttpDeliveryMethods.AuthorizationHeaderRequest),
AccessTokenEndpoint = new MessageReceivingEndpoint(
"https://api.twitter.com/oauth/access_token",
HttpDeliveryMethods.GetRequest |
HttpDeliveryMethods.AuthorizationHeaderRequest),
TamperProtectionElements = new ITamperProtectionChannelBindingElement[] { new HmacSha1SigningBindingElement() },
};
IConsumerTokenManager _tokenManager;
public TwitterClient(IConsumerTokenManager tokenManager)
{
_tokenManager = tokenManager;
}
public void StartAuthentication()
{
var request = HttpContext.Current.Request;
using (var twitter = new WebConsumer(ServiceDescription, _tokenManager))
{
var callBackUrl = new Uri(request.Url.Scheme + "://" + request.Url.Authority + "/Members/TwitterCallback");
twitter.Channel.Send(
twitter.PrepareRequestUserAuthorization(callBackUrl, null, null)
);
}
}
public bool FinishAuthentication()
{
using (var twitter = new WebConsumer(ServiceDescription, _tokenManager))
{
var accessTokenResponse = twitter.ProcessUserAuthorization();
if (accessTokenResponse != null)
{
UserName = accessTokenResponse.ExtraData["screen_name"];
return true;
}
}
return false;
}
}
И я следующий в конструкторе моего MembersController который инстанцирования InMemoryTokenManager с правильными учетными данными
_tokenManager = new InMemoryTokenManager(ConfigUtils.GetAppSetting("TwitterAppId"), ConfigUtils.GetAppSetting("TwitterAppSecret"));
И две мои действия являются
public ActionResult LogonTwitter()
{
var client = new TwitterClient(_tokenManager);
client.StartAuthentication();
return null;
}
public ActionResult TwitterCallback()
{
var client = new TwitterClient(_tokenManager);
if (client.FinishAuthentication())
{
return new RedirectResult("/");
}
// show error
return View("LogOn");
}
Ошибка появляется в StartAuthentication() в моем TwitterClient. Как только он называет эту линию
twitter.Channel.Send(
twitter.PrepareRequestUserAuthorization(callBackUrl, null, null)
);
Я получаю следующую ошибку
Error occurred while sending a direct message or getting the response.
Inner Exception: The remote server returned an error: (401) Unauthorized.
Кто-нибудь получил какие-либо советы? Я провел большую часть вчерашнего дня и сегодня утром пытался разобраться в этом. Все онлайн-примеры, которые я попробовал, также, похоже, получили 401 Unauthorized назад? Есть ли известная проблема с DotNetOpenAuth и Twitter?
Любая помощь очень ценится.
Я ищу код в facebook, например, любой шанс, что вы поделитесь тем, что у вас есть? Я все время получаю ошибку 400 плохой запрос – user1186651
Thankkkkkkkkksssssssssssss !!!!! – benjguin
Спасибо большое! :) –