2009-11-24 3 views
0

누구든지 감사 할 수 있다면 아래 코드를 PHP 버전으로 변환하려고합니다.ASP에서 PHP 로의 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; 
    } 

답변

0

이 검증되지 않은,하지만이 시도 : 당신이 $SecretKey$APIKey를 선언 할 경우

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

잘 모르겠어요,하지만 기본적인 생각이다.

+0

쿨, 고마워. 불행히도 그것의 작동하지 않습니다 - 필자는이 방법을 포기하고 완전히 다른 것을 시도했지만 노력에 감사드립니다. –