Я пытаюсь выполнить некоторые запросы api битбакет, используя библиотеку csharp.bitbucket. У меня есть код, который извлекает токен запроса, а затем создает URL-адрес проверки подлинности. Authenticate URL выглядит какЗагрузите строку из битбакет с базовой аутентификацией
https://bitbucket.org/api/1.0/oauth/authenticate/?oauth_token=xxxxxx
Где ххххх мой маркер, который я уже извлекаться через Bitbucket апи.
Проблема, с которой я сталкиваюсь, когда я пытаюсь использовать webclient, загружаю url. Я всегда получаю страницу входа в bitbucket, хотя я передаю заголовок авторизации. Когда я ударяю URL-адрес аутентификации, используя почтальон и проходя через один и тот же токен и заголовок авторизации, все это работает. Мой код выглядит следующим образом:
using (var wc = new CookieWebClient(_username, _password))
{
pageText = wc.DownloadString(url);
}
Класс CookieWebClient выглядит
public class CookieWebClient : WebClient
{
public CookieContainer m_container = new CookieContainer();
public WebProxy proxy = null;
public CookieWebClient(string authenticationUser,string authenticationPassword)
{
string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(authenticationUser + ":" + authenticationPassword));
Headers[HttpRequestHeader.Authorization] = "Basic " + credentials;
}
protected override WebRequest GetWebRequest(Uri address)
{
try
{
ServicePointManager.DefaultConnectionLimit = 1000000;
WebRequest request = base.GetWebRequest(address);
request.Proxy = proxy;
var webRequest = request as HttpWebRequest;
webRequest.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36";
webRequest.PreAuthenticate = true;
webRequest.AllowAutoRedirect = true;
webRequest.Pipelined = true;
webRequest.KeepAlive = true;
if (webRequest != null)
{
webRequest.CookieContainer = m_container;
}
return webRequest;
}
catch
{
return null;
}
}
}
Похоже Аутентифицировать часть через WebClient не работает becuase, когда я делаю вызов DownloadString я получаю страницу входа Bitbucket.
Кто-нибудь видел это раньше?
Заранее спасибо
Исмаил
немного больше информации об этом при работе с человеком после она попадает /api/1.0/oauth/authenticate/?oauth_token= затем делает 301 редирект/сайт/OAuth1/авторизовать? Oauth_token = заголовок авторизации однако с веб-клиентом после 301 заголовок теряется. – Ismail