編集:私は賞金を追加しました、誰かが私が間違っていることを理解するのを手伝ってくれるなら、それはすべてあなたのものです。
また、これがどのように行われるかはあまり気にしません。助けることができる図書館、またはそのようなものがあれば素晴らしいでしょう。
キャプチャが含まれていないので、理論的にはFlickrにログインして、次のようなコードで連絡先を追加できるはずです...正しいですか?
連絡先を追加していることを確認するためにフォームを送信することになっている場所に到達したときに、このコードとその多くのバリエーションを実行すると、ログインするように求められます。これが私の失敗である可能性がある唯一のことです適切なCookieを収集するには?
IE用のIEHTTPHeaderを使用して、実際に何が起こっているかを確認し、それをエミュレートするために最善を尽くしています。何かがわからない限り、どこが間違っているのかわかりません。
FlickrAPIはこれを行うことができません
ログインして、事前定義された連絡先を追加するだけです。
//This Kicks off the process
private void button2_Click(object sender, EventArgs e)
{
string user = "adampeditto"; //Some Random Guy
CookieContainer cookies = new CookieContainer();
cookies = LoginYahoo(cookies, user);
cookies = GetCookies(cookies, user);
cookies = ClickFlickrButton(cookies, user);
}
private CookieContainer ClickFlickrButton(CookieContainer cookies, string user)
{
try
{
string appURL = "http://www.flickr.com/people/" + user + "/relationship";
string strPostData = "magic_cookie=a9dd9cd9fd23081f35b8bad2c0ba1878&done=1";
// Setup the http request.
HttpWebRequest wrWebRequest = WebRequest.Create(appURL) as HttpWebRequest;
wrWebRequest.Method = "POST";
wrWebRequest.Timeout = 10000;
wrWebRequest.ContentLength = strPostData.Length;
wrWebRequest.ContentType = "application/x-www-form-urlencoded";
CookieContainer cookieContainer = cookies;
wrWebRequest.CookieContainer = cookieContainer;
// Post to the login form.
StreamWriter swRequestWriter = new
StreamWriter(wrWebRequest.GetRequestStream());
swRequestWriter.Write(strPostData);
swRequestWriter.Close();
// Get the response.
HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
// Read the response
StreamReader srResponseReader = new StreamReader(hwrWebResponse.GetResponseStream());
string strResponseData = srResponseReader.ReadToEnd();
srResponseReader.Close();
return cookieContainer;
}
catch (Exception ex)
{
throw ex;
}
}
private CookieContainer LoginYahoo(CookieContainer cookies, string user)
{
string loginName = "YourLoginName";
string password = "YourPassword";
string appURL = "https://login.yahoo.com/config/login?.src=flickr&.pc=5134&.scrumb=0&.pd=c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-&.intl=us&.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%2Fvalidate%3F.src%3Dflickr%26.pc%3D5134%26.scrumb%3D0%26.pd%3Dc%253DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-%26.intl%3Dus%26.done%3Dhttp%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253D%25252Fpeople%25252F" + user + "%25252Frelationship%25252F&rl=1";
string strPostData = ".tries=1&.src=flickr&.md5=&.hash=&.js=&.last=&promo=&.intl=us&.bypass=&.partner=&.u=0delt5h5l4df0&.v=0&.challenge=3DZF0DFFqdE0m.9MWnCq6LjUZ9gV&.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=1&.chkP=Y&.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%2Fvalidate%3F.src%3Dflickr%26.pc%3D5134%26.scrumb%3D0%26.pd%3Dc%253DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-%26.intl%3Dus%26.done%3Dhttp%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253D%25252Fpeople%25252F" + user + "%25252Frelationship%25252F&.pd=flickr_ver%3D0%26c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-%26ivt%3D%26sg%3D&login=" + loginName + "&passwd=" + password + "&.persistent=y&.save=Sign+In";
// Setup the http request.
HttpWebRequest wrWebRequest = WebRequest.Create(appURL) as
HttpWebRequest;
wrWebRequest.AllowAutoRedirect = true;
wrWebRequest.Method = "POST";
wrWebRequest.ContentLength = strPostData.Length;
wrWebRequest.ContentType = "application/x-www-form-urlencoded";
CookieContainer cookieContainer = cookies;
wrWebRequest.CookieContainer = cookieContainer;
// Post to the login form.
StreamWriter swRequestWriter = new
StreamWriter(wrWebRequest.GetRequestStream());
swRequestWriter.Write(strPostData);
swRequestWriter.Close();
// Get the response.
HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
// Read the response
StreamReader srResponseReader = new
StreamReader(hwrWebResponse.GetResponseStream());
string strResponseData = srResponseReader.ReadToEnd();
srResponseReader.Close();
//YOU ARE NOW LOGGED IN TO YAHOO!
ShowInBrowser(strResponseData);
return cookieContainer;
}
//These are the places it sends you upon autoredirect after your run LoginYahoo(), if you set AutoRedirect to true there should be no need for this...
private CookieContainer GetCookies(CookieContainer cookies, string user)
{
CookieContainer cookieContainer = cookies;
string appURL = "http://login.yahoo.com/config/validate?.src=flickr&.pc=5134&.scrumb=6l14Ni2Pz3j&.pd=c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-&.intl=us&.done=http%3A%2F%2Fwww.flickr.com%2Fsignin%2Fyahoo%2F%3Fredir%3D%252Fpeople%252F" + user + "%252Frelationship%252F";
HttpWebRequest wrWebRequest = WebRequest.Create(appURL) as HttpWebRequest;
wrWebRequest.CookieContainer = cookieContainer;
wrWebRequest.AllowAutoRedirect = false;
HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
appURL = "http://flickr.com/signin/yahoo/?redir=%2Fpeople%2F" + user + "%2Frelationship%";
HttpWebRequest wrWebRequest2 = WebRequest.Create(appURL) as HttpWebRequest;
wrWebRequest2.CookieContainer = cookieContainer;
wrWebRequest2.AllowAutoRedirect = false;
HttpWebResponse hwrWebResponse2 = (HttpWebResponse)wrWebRequest2.GetResponse();
appURL = "http://flickr.com/cookie_check.gne?pass=%2Fpeople%2F" + user + "%2Frelationship%2F&fail=register_cookies.gne";
HttpWebRequest wrWebRequest3 = WebRequest.Create(appURL) as HttpWebRequest;
wrWebRequest3.CookieContainer = cookieContainer;
wrWebRequest3.AllowAutoRedirect = true;
HttpWebResponse hwrWebResponse3 = (HttpWebResponse)wrWebRequest3.GetResponse();
return cookieContainer;
}