programing

Facebook Connect 및 ASP.NET

procenter 2023. 9. 7. 23:40
반응형

Facebook Connect 및 ASP.NET

여기에서 확인할 수 있는 인증 개요의 8단계에 있습니다. http://wiki.developers.facebook.com/index.php/How_Connect_Authentication_Works

특히 사용자는 페이스북 커넥트를 통해 페이스북에 로그인하여 웹세션이 생성되었습니다.Facebook 개발자 툴킷 v2.0을(명확하게) 사용하여 사용자에 대한 정보를 검색하려면 어떻게 해야 합니까?예를 들어, 사용자의 이름과 성을 알고 싶습니다.

설명서의 예는 페이스북 응용 프로그램에 맞춰진 것이지만, 그렇지 않습니다.

갱신하다

페이스북은 최근 그래프 API를 공개했습니다.Facebook Connect를 사용하는 응용 프로그램을 유지하고 있지 않다면 최신 API(http://developers.facebook.com/docs/ 를 확인해야 합니다.

사용자가 페이스북 커넥트로 로그인하면 서버 사이드 콜을 하는 방법을 파악하는 데 어려움을 겪었습니다.핵심은 일단 로그인이 성공하면 Facebook Connect 자바스크립트가 클라이언트에 쿠키를 설정한다는 것입니다.이 쿠키 값을 사용하여 서버에서 API 호출을 수행합니다.

혼란스러웠던 부분은 그들이 공개한 PHP 샘플을 보는 것이었습니다.서버 측 API는 자동으로 이러한 쿠키 값을 읽고 로그인한 사용자를 대신하여 요청할 준비가 된 API 개체를 설정합니다.

다음은 사용자가 Facebook Connect에 로그인한 후 서버에서 Facebook Toolkit을 사용하는 예입니다.

서버 코드:

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

저는 이 개념을 추적하여 ASP에서 이 문제를 해결하는 본격적인 글을 썼습니다.NET. 아래를 참조해 주세요.

ASP에서 Facebook Connect에서 사용자 데이터를 검색하는 방법NET - 데브타큘러

그 도우미 수업에서 좋은 출발을 보여준 Calebt에게 감사드립니다.

즐거운 시간 되세요.

Facebook Connect는 사실 그렇게 어렵지는 않고, 문서가 부족할 뿐입니다.

여기서 필요한 자바스크립트를 넣습니다.

쿠키가 Facebook에서 제공한 서명과 일치하는지 확인하여 해킹을 방지합니다. 시작 방법에 대한 설명은 이 항목을 참조하십시오.

api 객체 생성 (페이스북).페이스북API합니다.설정 API) api api api api api api를 facebook하는 application key및 secretapi.SessionKey그리고.api.UserIdFacebook connect에서 당신을 위해 만든 쿠키에서.

이 작업이 완료되면 페이스북으로 전화를 걸기 시작할 수 있습니다.

Facebook.Entity.User user = api.GetUserInfo();   //will get you started with the authenticated person

이것은 지금까지 나열된 답변에서 누락되었습니다.

로그인이 성공한 후 Facebook은 쿠키가 실제로 합법적인지 확인하고 쿠키가 클라이언트 시스템에 있는지 확인하는 것을 권장합니다.

이를 해결하기 위해 함께 사용할 수 있는 두 가지 방법이 있습니다.Calebt의 Utility 클래스에 IsValidFacebookSignature 메서드를 추가할 수 있습니다.그의 Get Facebook Cookie 방법도 약간 바꿨습니다.

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와 ApiKey는 Facebook에서 제공하는 값입니다.이 경우, 가급적이면 .config 파일에서 이러한 값을 설정해야 합니다.

저는 빌의 훌륭한 기사를 보고 이 작은 부품을 만들었습니다.Facebook Connect 쿠키에서 사용자를 식별하고 유효성을 확인합니다.

ASP.NET용 Facebook Connect 인증

누군가에게 도움이 되었으면 좋겠습니다!

건배.

아담

SocialAuth.NET을 사용할 수도 있습니다.

거의 개발 노력 없이 페이스북, 구글, MSN, 야후 등과의 인증, 프로필, 연락처 등을 제공합니다.

나의 2센트: "페이스북과의 대화" 기능을 활용한 매우 간단한 프로젝트 - facebooklogin.codeplex.com

도서관은 아니지만 모든 것이 어떻게 작동하는지 보여줍니다.

언급URL : https://stackoverflow.com/questions/323019/facebook-connect-and-asp-net

반응형