2009-02-27 2 views
1

Я следил за инструкциями в этом замечательном Stackoverflow question, но я не уверен об этом. Предоставляется ли это каким-то образом в Инструментарий Facebook или я должен что-то делать сам? documentation не superclear о том, как это сделать, и если он уже испечен в инструментарии facebook, я не хочу тратить на него много времени.Подтвердить подпись Facebook Connect

Кто-нибудь это сделал? Следует упомянуть, что я использую стандартное веб-приложение ASP.NET в C#. Любая помощь будет оценена!

ответ

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, он делает то же, что и выше, и немного больше.

Смежные вопросы