2009-02-27 75 views
1

我按照這個偉大的Stackoverflow question中的說明,但我不確定這個驗證簽名的事情。這是以某種方式在Facebook工具包中提供的,還是我必須自己做一些事情? documentation對於如何做到這一點並不是很清楚,如果它已經在facebook工具箱中烘焙過了,我不想花太多時間在它上面。驗證簽名Facebook的連接

任何人都這樣做了?應該提到我在C#中使用標準的ASP.NET Web應用程序。任何幫助,將不勝感激!

回答

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來做到這一點,它與上述相同,並且稍微多一點。