Facebook Connect og ASP.NET

stemmer
45

Jeg er på trinn 8 av autentiserings oversikt finnes her: http://wiki.developers.facebook.com/index.php/How_Connect_Authentication_Works

Spesielt har brukeren logget på Facebook via Facebook Connect og deres web-økten er opprettet. Hvordan bruker jeg facebook utvikler verktøykasse v2.0 (fra klarhet) for å hente informasjon om brukeren. For eksempel vil jeg gjerne få brukerens fornavn og etternavn.

Eksempler på dokumentasjon er rettet mot Facebook-applikasjoner, som dette er det ikke.

Oppdater

Facebook nylig utgitt Graph API. Med mindre du er å opprettholde et program som bruker Facebook Connect, bør du sjekke ut den nyeste API: http://developers.facebook.com/docs/

Publisert på 27/11/2008 klokken 05:44
kilden bruker
På andre språk...                            


7 svar

stemmer
13

Facebook Connect er faktisk ikke så vanskelig, det er bare mangel på dokumentasjon.

Sett den nødvendige javascript herfra: http://tinyurl.com/5527og

Validere cookies matche signaturen levert av facebook for å hindre hacking, se: http://tinyurl.com/57ry3s for en forklaring på hvordan du kommer i gang

Opprett en api objekt (Facebook.API.FacebookAPI) På api objekt, sette programmet nøkkelen og hemmelig Facebook gir deg når du oppretter en app. Satt api.SessionKeyog api.UserIdfra informasjonskapsler som er opprettet for deg fra Facebook Connect.

Når det er gjort, kan du begynne å ringe til facebook:

Facebook.Entity.User user = api.GetUserInfo();   //will get you started with the authenticated person
Svarte 02/12/2008 kl. 07:34
kilden bruker

stemmer
23

Jeg hadde mye problemer med å finne ut hvordan å lage server side kaller en gang en bruker logget på med Facebook Connect. Nøkkelen er at Facebook Connect javascript setter cookies på klienten når det er en vellykket innlogging. Du bruker verdiene av disse cookies for å utføre API-kall på serveren.

Den forvirrende delen var ute på PHP prøve de ut. Deres server API side tar automatisk vare på å lese disse cookie-verdier og sette opp en API objekt som er klar til å gjøre forespørsler på vegne av den påloggede brukeren.

Her er et eksempel bruker Facebook Toolkit på serveren etter at brukeren har logget på med Facebook Connect.

Server kode:

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;
    }
}
Svarte 15/12/2008 kl. 21:02
kilden bruker

stemmer
15

Jeg fulgte opp dette konseptet og skrev en fullverdig artikkel som løser dette problemet i ASP.NET. Vennligst se følgende.

Hvordan hente brukerdata fra Facebook Connect i ASP.NET - Devtacular

Takk til Calebt for en god start på det helper klasse.

Nyt.

Svarte 01/03/2009 kl. 06:43
kilden bruker

stemmer
8

Dette mangler i de svarene som er oppført så langt:

Etter vellykket pålogging Facebook anbefaler at du validerer cookies er faktisk legit og plassert på klientmaskinen av dem.

Her er to metoder som kan brukes sammen for å løse dette. Du ønsker kanskje å legge til IsValidFacebookSignature metode for å calebt nytte klasse. Merker jeg har forandret hans GetFacebookCookie metoden litt også.

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;
    }

Den SecretKey og apikey er verdier gitt til deg av Facebook. I dette tilfellet er disse verdiene må settes, fortrinnsvis fra .config.

Svarte 03/06/2009 kl. 02:34
kilden bruker

stemmer
6

Jeg fulgte opp fra Bill stor artikkel, og gjorde dette lille komponenten. Det tar vare på å identifisere og validere brukeren fra Facebook Connect cookies.

Facebook Connect Godkjenning for ASP.NET

Jeg håper det hjelper noen!

Jubel,

Adam

Svarte 30/06/2009 kl. 20:09
kilden bruker

stemmer
1

Min to cents: et veldig enkelt prosjekt utnytte "logg inn med Facebook" -funksjonen - facebooklogin.codeplex.com

Ikke et bibliotek, men viser hvordan det hele fungerer.

Svarte 11/04/2011 kl. 20:23
kilden bruker

stemmer
3

Du kan også bruke SocialAuth.NET

Det gir autentisering, profiler og kontakter med Facebook, Google, MSN og Yahoo med lite utviklingsinnsats.

Svarte 30/05/2011 kl. 12:33
kilden bruker

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