2009-02-27 9 views
1

Ich habe die Anweisungen in diesem großen Stackoverflow question befolgt, aber ich bin mir nicht sicher, ob diese Unterschrift überprüfen. Wird dies in irgendeiner Form im Facebook Toolkit bereitgestellt oder muss ich selbst etwas tun? Die documentation ist nicht super klar, wie dies zu tun ist und wenn es bereits in der Facebook-Toolkit gebacken ist möchte ich nicht zu viel Zeit darauf verbringen.Signatur bestätigen Facebook Connect

Wer hat das getan? Sollte erwähnen, dass ich eine Standard-ASP.NET-Webanwendung in C# verwende. Jede Hilfe wäre willkommen!

Antwort

1

Im Moment müssen Sie es selbst tun. Ich habe eine einfache Methode bereitgestellt, die Sie aufrufen können, um zu sehen, ob die Signatur gültig ist oder nicht.

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

Hinweis: SecretKey und ApiKey sind von Facebook bereitgestellte Werte, die Sie festlegen müssen.

0

Sie können dies mit FBConnectAuth tun, es tut das gleiche wie oben und ein wenig mehr.