Подтвердить подпись Facebook Connect - PullRequest
1 голос
/ 27 февраля 2009

Я следовал инструкциям в этом замечательном вопросе Stackoverflow , но я не уверен насчет этой вещи проверки подписи. Это предусмотрено каким-то образом в Facebook Toolkit или мне нужно что-то делать самому? В документации нет ясности относительно того, как это сделать, и если она уже запечена в наборе инструментов Facebook, я не хочу тратить на это много времени.

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

Ответы [ 2 ]

1 голос
/ 03 июня 2009

На данный момент вы должны сделать это самостоятельно. Я предоставил простой метод, который вы можете вызвать, чтобы проверить, действительна ли подпись.

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 голосов
/ 27 августа 2009

Вы можете сделать это, используя FBConnectAuth , он делает то же, что и выше, и немного больше.

...