2009-02-27 3 views
1

나는이 위대한 지침 Stackoverflow question을 따라 왔지만이 서명 내용을 확인하는 것은 확실하지 않습니다. 이것은 Facebook Toolkit에서 어떤 방식 으로든 제공 되었습니까? 아니면 직접해야합니까? documentation는 이것을하는 방법에 superclear가 아니고 facebook 툴킷에서 이미 구운 경우에 나는 많은 시간을 그것에 쓰고 싶지 않다.서명 확인 페이스 북 연결

누구든지이 작업을 수행 했습니까? C#에서 표준 ASP.NET 웹 응용 프로그램을 사용해야 함을 언급해야합니다. 어떤 도움을 주시면 감사하겠습니다!

답변

1

지금은 직접해야합니다. 서명이 유효한지 확인할 수있는 간단한 방법을 제공했습니다.

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에서 제공 한 값입니다.

0

FBConnectAuth을 사용하면 위와 동일하게 처리 할 수 ​​있습니다.