C# 验证签名Facebook Connect

C# 验证签名Facebook Connect,c#,facebook,signature,C#,Facebook,Signature,我已经按照这个伟大的指示,但我不确定这个验证签名的事情。这是Facebook工具包中以某种方式提供的,还是我必须自己做些什么?关于如何做到这一点,这并不是一个超级清晰的问题,如果它已经在facebook工具包中烘焙,我不想花太多时间在它上面 有人这样做过吗?应该提到的是,我在C#中使用了标准的ASP.NET Web应用程序。任何帮助都将不胜感激 目前,你必须自己做。我提供了一个简单的方法,您可以调用它来查看签名是否有效 private bool IsValidFacebookSignature(

我已经按照这个伟大的指示,但我不确定这个验证签名的事情。这是Facebook工具包中以某种方式提供的,还是我必须自己做些什么?关于如何做到这一点,这并不是一个超级清晰的问题,如果它已经在facebook工具包中烘焙,我不想花太多时间在它上面


有人这样做过吗?应该提到的是,我在C#中使用了标准的ASP.NET Web应用程序。任何帮助都将不胜感激

目前,你必须自己做。我提供了一个简单的方法,您可以调用它来查看签名是否有效

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提供的值,您需要设置。

目前,您必须自己设置。我提供了一个简单的方法,您可以调用它来查看签名是否有效

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提供的值,您需要设置。

您可以使用,它的作用与上面相同,还有更多

您可以使用来完成此操作,它与上面的操作相同,还可以执行更多操作