Facebook Connect i ASP.NET

głosy
45

Jestem na etapie 8 przeglądzie uwierzytelniania znaleźć tutaj: http://wiki.developers.facebook.com/index.php/How_Connect_Authentication_Works

W szczególności użytkownik zalogował się na Facebooku poprzez Facebook Connect i ich sesja internetowa została stworzona. W jaki sposób mogę korzystać z facebook developer toolkit v2.0 (od jasności) do pobierania informacji o użytkowniku. Na przykład, chciałbym dostać imię użytkownika i nazwisko.

Przykłady w dokumentacji są ukierunkowane na aplikacje facebook, które to nie jest.

Aktualizacja

Facebook niedawno wydany Graph API. Chyba że utrzymanie aplikację korzystającą Facebook Connect, należy sprawdzić najnowsze API: http://developers.facebook.com/docs/

Utwórz 27/11/2008 o 06:44
źródło użytkownik
W innych językach...                            


7 odpowiedzi

głosy
13

Facebook Connect rzeczywiście nie jest zbyt trudne, nie tylko brak dokumentacji.

Umieścić niezbędne JavaScript stąd: http://tinyurl.com/5527og

Zatwierdzić ciasteczka dopasować podpis dostarczone przez Facebook, aby zapobiec hacking, zobacz: http://tinyurl.com/57ry3s o wyjaśnienie jak zacząć

Utwórz obiekt API (Facebook.API.FacebookAPI) na obiekcie API ustawić klucz tajny Facebook aplikacji i zapewnia podczas tworzenia aplikacji. Ustaw api.SessionKeyi api.UserIdod ciasteczka utworzone dla Ciebie z Facebook połączyć.

Gdy to zrobisz, możesz rozpocząć wykonywanie połączeń do Facebooka:

Facebook.Entity.User user = api.GetUserInfo();   //will get you started with the authenticated person
Odpowiedział 02/12/2008 o 08:34
źródło użytkownik

głosy
23

Miałem wiele kłopotów na zastanawianie się, jak zrobić po stronie serwera połączeń, gdy użytkownik zalogowany na Facebook Connect. Kluczem jest to, że Facebook Connect JavaScript ustawia cookie na kliencie raz tam udane logowania. Za pomocą wartości tych ciasteczek do wykonywania wywołań API na serwerze.

Mylące część patrzyła na próbce PHP one zwolnione. Ich server side API automatycznie dba o przeczytaniu tych wartości ciasteczek i utworzenie obiektu API, który jest gotowy do żądania w imieniu zalogowanego użytkownika.

Oto przykład używając Facebook Toolkit na serwerze, gdy użytkownik zalogowany na Facebook Connect.

Kod serwera:

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;
    }
}
Odpowiedział 15/12/2008 o 22:02
źródło użytkownik

głosy
15

Śledziłem się na tej koncepcji i napisał pełnoprawny artykuł, który rozwiązuje ten problem w ASP.NET. Proszę zobaczyć, co następuje.

Jak pobrać dane użytkownika z Facebook Connect w ASP.NET - Devtacular

Dzięki Calebt na dobry początek na tej klasy pomocnika.

Cieszyć się.

Odpowiedział 01/03/2009 o 07:43
źródło użytkownik

głosy
8

Ten brakuje odpowiedzi wymienionych do tej pory:

Po zalogowaniu się powiedzie, Facebook zaleca, aby potwierdzić ciasteczka są w rzeczywistości legit i umieszczony na komputerze klienckim przez nich.

Oto dwa sposoby, które mogą być używane razem, aby rozwiązać ten problem. Może chcesz dodać metodę IsValidFacebookSignature do klasy użytkowej calebt użytkownika. Zauważ, że zmieniły swoją metodę GetFacebookCookie nieznacznie, jak również.

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

Tajny klucz i ApiKey to wartości podane przez Facebook. W tym przypadku wartości te muszą być ustawione, najlepiej pochodzących z pliku .config.

Odpowiedział 03/06/2009 o 03:34
źródło użytkownik

głosy
6

Śledziłem się z wielkim artykule Billa i uczynił ten mały komponent. Dba o identyfikacji i walidacji użytkownika z plików cookie Facebook Connect.

Facebook Connect uwierzytelniania dla ASP.NET

Mam nadzieję, że ktoś pomoże!

Twoje zdrowie,

Adam

Odpowiedział 30/06/2009 o 21:09
źródło użytkownik

głosy
1

Moje dwa centy: a bardzo prosty projekt wykorzystując „Login with Facebook” cecha - facebooklogin.codeplex.com

Nie jest to biblioteka, ale pokazuje, jak to wszystko działa.

Odpowiedział 11/04/2011 o 21:23
źródło użytkownik

głosy
3

Można również użyć SocialAuth.NET

Zapewnia uwierzytelniania, profile i kontakty z Facebook, Google, MSN i Yahoo przy niewielkim wysiłku na rzecz rozwoju.

Odpowiedział 30/05/2011 o 13:33
źródło użytkownik

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