Facebook Connect și ASP.NET

voturi
45

Sunt la pasul 8 din prezentarea generală de autentificare găsite aici: http://wiki.developers.facebook.com/index.php/How_Connect_Authentication_Works

În special, utilizatorul a conectat la Facebook prin intermediul Facebook Connect și sesiunea de web a fost creat. Cum folosesc Facebook Developer Toolkit v2.0 (de la claritate) pentru a prelua informații despre utilizator. De exemplu, aș dori să obțină mai întâi numele utilizatorului și numele de familie.

Exemple în documentația sunt orientate spre aplicații Facebook, pe care acest lucru nu este.

Actualizați

Facebook a lansat recent API - ul Graph. Dacă nu se menține o aplicație care utilizează Facebook Connect, ar trebui să verificați cele mai recente API: http://developers.facebook.com/docs/

Întrebat 27/11/2008 la 06:44
sursa de către utilizator
În alte limbi...                            


7 răspunsuri

voturi
13

Facebook Connect de fapt, nu este prea dificil, există doar o lipsă de documentare.

Pune JavaScript necesar de aici: http://tinyurl.com/5527og

Validați cookie - urile corespund cu semnătura furnizate de Facebook pentru a preveni hacking, a se vedea: http://tinyurl.com/57ry3s pentru o explicație cu privire la modul de a începe

Crearea unui obiect api (Facebook.API.FacebookAPI) Pe obiectul api, setați cheia secretă de aplicații și Facebook vă oferă atunci când creați aplicația. Set api.SessionKeyși api.UserIdde cookie - uri create pentru tine de la Facebook Connect.

Odată ce se face, puteți începe efectuarea de apeluri prietenilor tai:

Facebook.Entity.User user = api.GetUserInfo();   //will get you started with the authenticated person
Publicat 02/12/2008 la 08:34
sursa de către utilizator

voturi
23

Am avut o mulțime de probleme imaginind cum să facă apeluri pe partea de server după ce un utilizator conectat cu Facebook Connect. Cheia este că Facebook Connect javascript seturi cookie-uri pe client o dată există o conectare de succes. Utilizați valorile acestor cookie-uri pentru a efectua apeluri API pe server.

Partea confuză a fost uita la proba PHP au eliberat. API-ul lor pe partea de server are grijă automat de citire aceste valori cookie-uri și crearea unui obiect API care este gata să facă cereri în numele utilizatorul conectat.

Iată un exemplu folosind Facebook Toolkit pe server după ce utilizatorul a conectat cu Facebook Connect.

Cod server:

API api = new API();
api.ApplicationKey = Utility.ApiKey();
api.SessionKey = Utility.SessionKey();
api.Secret = Utility.SecretKey();
api.uid = Utility.GetUserID();

facebook.Schema.user user = api.users.getInfo();
string fullName = user.first_name + " " + user.last_name;

foreach (facebook.Schema.user friend in api.friends.getUserObjects())
{
   // do something with the friend
}

Utility.cs

public static class Utility
{
    public static string ApiKey()
    {
        return ConfigurationManager.AppSettings["Facebook.API_Key"];
    }

    public static string SecretKey()
    {
        return ConfigurationManager.AppSettings["Facebook.Secret_Key"];
    }

    public static string SessionKey()
    {
        return GetFacebookCookie("session_key");
    }

    public static int GetUserID()
    {
        return int.Parse(GetFacebookCookie("user"));
    }

    private static string GetFacebookCookie(string name)
    {
        if (HttpContext.Current == null)
            throw new ApplicationException("HttpContext cannot be null.");

        string fullName = ApiKey() + "_" + name;
        if (HttpContext.Current.Request.Cookies[fullName] == null)
            throw new ApplicationException("Could not find facebook cookie named " + fullName);
        return HttpContext.Current.Request.Cookies[fullName].Value;
    }
}
Publicat 15/12/2008 la 22:02
sursa de către utilizator

voturi
15

Am urmărit pe acest concept și a scris un articol cu ​​drepturi depline, care rezolvă această problemă în ASP.NET. Vă rugăm să consultați următoarele.

Cum de a prelua date de utilizator de la Facebook Connect în ASP.NET - Devtacular

Datorită Calebt pentru un start bun pe această clasă de ajutor.

Bucurați-vă.

Publicat 01/03/2009 la 07:43
sursa de către utilizator

voturi
8

Acest lucru lipsește din răspunsurile enumerate până acum:

După conectare este de succes, Facebook vă recomandă să validați cookie-urile sunt de fapt legit și plasat pe masina client de acestea.

Iată două metode care pot fi folosite împreună pentru a rezolva acest lucru. S-ar putea dori să adăugați metoda IsValidFacebookSignature la clasa Utility calebt lui. Observați am schimbat metoda lui GetFacebookCookie ușor, de asemenea.

private bool IsValidFacebookSignature()
{
        //keys must remain in alphabetical order
        string[] keyArray = { "expires", "session_key", "ss", "user" };
        string signature = "";

        foreach (string key in keyArray)
            signature += string.Format("{0}={1}", key, GetFacebookCookie(key));

        signature += SecretKey; //your secret key issued by FB

        MD5 md5 = MD5.Create();
        byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(signature.Trim()));

        StringBuilder sb = new StringBuilder();
        foreach (byte hashByte in hash)
            sb.Append(hashByte.ToString("x2", CultureInfo.InvariantCulture));

        return (GetFacebookCookie("") == sb.ToString());
    }

    private string GetFacebookCookie(string cookieName)
    {
        //APIKey issued by FB
        string fullCookie = string.IsNullOrEmpty(cookieName) ? ApiKey : ApiKey + "_" + cookieName;

        return Request.Cookies[fullCookie].Value;
    }

SecretKey și ApiKey sunt valori oferite prin Facebook. În acest caz, aceste valori trebuie să fie stabilite, de preferință provenind din fișierul .config.

Publicat 03/06/2009 la 03:34
sursa de către utilizator

voturi
6

Am urmat de marele articol Bill, și a făcut această mică componentă. Este nevoie de grija de a identifica și valida utilizatorul de cookie-urile Facebook Connect.

Facebook Connect de autentificare pentru ASP.NET

Sper că vă ajută cineva!

Noroc,

Adam

Publicat 30/06/2009 la 21:09
sursa de către utilizator

voturi
1

Meu doi cenți: un foarte simplu proiect utilizând „conectare cu Facebook“ facilitate - facebooklogin.codeplex.com

Nu este o bibliotecă, dar arată cum funcționează.

Publicat 11/04/2011 la 21:23
sursa de către utilizator

voturi
3

Ați putea folosi , de asemenea SocialAuth.NET

Acesta oferă autentificare, profile si contacte cu Facebook, Google, MSN si Yahoo cu un efort de dezvoltare pic.

Publicat 30/05/2011 la 13:33
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more