2009-11-25 2 views
0

Мне нужно иметь возможность регистрировать пользователей в нашей учетной записи flickr, используя имя пользователя и пароль учетной записи.Пример кода (C#) для входа в flickr с использованием HttpWebRequest

Я искал в Интернете довольно долгое время, но только обнаружил биты и фрагменты реализации. Я вообще не испытываю Http-звонки. Мне нужен полный пример. Это код, который я до сих пор:.

HttpWebRequest http = WebRequest.Create(url) as HttpWebRequest; 
http.Method = "POST"; 
http.ContentType = "application/x-www-form-urlencoded"; 
string postData = "FormNameForUserId=" + username + "&FormNameForPassword=" + password; 
byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData); 
http.ContentLength = dataBytes.Length; 

using (Stream postStream = http.GetRequestStream()) 
{ 
    postStream.Write(dataBytes, 0, dataBytes.Length); 
} 

HttpWebResponse httpResponse = http.GetResponse() as HttpWebResponse; 

Мои основные проблемы в этой точке я думаю это выяснить, что все параметры Flickr необходимо войти «вы» в

Любые предложения приветствуются

ответ

1

Вы можете попробовать использовать прокси-сервер, как Fiddler, чтобы проверить, что ваш браузер посылает в запросе авторизации.

Лучший вариант, однако, скорее всего, будет использовать Flickr API. FlickNet - это оболочка .Net для API.

1

Убедитесь, что вы установили http.AllowAutoRedirect = false; Это был источник 2-х часов удара головой. Иногда post-запрос возвращает перенаправление на главную страницу после входа в систему. NET auto следует за перенаправлением, но не отправляет вновь приобретенные файлы cookie. >. <

1

Flickr API требует:

API Key 
Perms (Permissions: read, write, delete) 
Frob 
API Signature 

Ваш URL будет в конечном итоге выглядит так:

http://flickr.com/services/auth/?api_key=[api_key]&perms=[perms]&frob=[frob]&api_sig=[api_sig] 

Самый простой способ построить свой Frob и маркер с Flickr.Net. Вот код, который делает это:

Flickr ourFlickr = new Flickr(); 

ourFlickr.ApiSecret = ApiSecret; 
ourFlickr.ApiKey = ApiKey; 

string signature = ApiSecret + "api_key" + ApiKey + "methodflickr.auth.getFrob"; 

string frob = ourFlickr.AuthGetFrob().ToString(); 

string url = "http://flickr.com/services/auth/?api_key=" + ourFlickr.ApiKey + "&perms=" + "read" + " &frob=" + frob + "&api_sig=" + signature; 

Надеюсь, это поможет. Использование их API и интерфейса будет намного проще, чем в любом случае перепроектировать их веб-форму.