2009-11-25 9 views
0

Je dois pouvoir connecter les utilisateurs à notre compte flickr en utilisant le nom d'utilisateur et le mot de passe du compte.Exemple de code (C#) pour la connexion à flickr en utilisant HttpWebRequest

Je fais des recherches en ligne depuis un bon moment maintenant mais je ne trouve que des morceaux d'une implémentation. Je n'ai pas d'expérience avec les appels Http du tout. J'ai besoin d'un exemple complet. Ceci est le code que j'ai jusqu'à présent.

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; 

Mes principaux problèmes à ce stade, je suppose est de trouver ce que tous les paramètres sont flickr demande de vous connecter « vous » dans

Toutes les suggestions sont les bienvenus

Répondre

1

Vous pouvez essayer d'utiliser un proxy comme Fiddler pour inspecter ce que votre navigateur envoie à la demande de connexion. Toutefois, la meilleure approche est probablement d'utiliser le Flickr API à la place. FlickNet est un wrapper .Net pour l'API.

1

Assurez-vous de régler http.AllowAutoRedirect = false; Cela a été la source de 2 heures de coups de tête pour moi. Parfois, la demande de publication renvoie une redirection vers la page d'accueil une fois que vous avez ouvert une session. .NET auto suit la redirection, mais ne soumet pas les nouveaux cookies. >. <

1

L'API Flickr nécessite:

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

Votre URL finira par ressembler à ceci:

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

La meilleure façon de construire votre frob et le jeton est avec Flickr.Net. Voici un code qui fait que:

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; 

J'espère que cela aide. Utiliser leur API et une interface va être beaucoup plus facile que d'essayer de désosser leur formulaire web de toute façon.