ASP, PHP Facebook kimlik doğrulama komut dosyası

1 Cevap php

Im herkes sayesinde yardımcı olabilir eğer, bir php sürümü için aşağıdaki kodu dönüştürmek için çalışıyor.

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

1 Cevap

Bu denenmemiş, ama bu deneyin:

function IsValidFacebookSignature() {
    $keyArray = array( 'expires', 'session_key', 'ss', 'user' );
    $signature = '';

    foreach( $key in $keyArray ) {
        $signature .= "$key=".GetFacebookCookie($key);
    }

    $signature .= $SecretKey;
    $hash = md5(trim($signature));

    return GetFacebookCookie('') == $hash;
}

function GetFacebookCookie($cookieName) {
    $fullCookie = empty($cookie) ? $APIKey : $APIKey . '_' . $cookieName;
    return $_COOKIES[$fullCookie];
}

Sana $SecretKey ve $APIKey ilan etmek isteyen nerede emin değilim, ama bu temel fikir.