2011-07-19 80 views
0

我正在嘗試設置自己的OAuth提供程序,但現在我一直在簽署請求。這是簽署的正確方法嗎?OAuth簽名

function generateSignature($consumerSecret, $requestURI, $requestData, $requestMethod) { 
    $signature = ''; 
    $signature .= strtoupper($requestMethod) . '&'; 
    $signature .= urlencode($requestURI) . '&'; 
    asort($requestData); 
    $query = http_build_query($requestData); 
    $signature .= urlencode($query); 
    echo oauthHMACsha1($consumerSecret, $signature); 

} 

function HMACsha1($key, $data) { 
    $blocksize = 64; 
    $hashfunc = 'sha1'; 
    if (strlen($key) > $blocksize) $key = pack('H*', $hashfunc($key)); 
    $key = str_pad($key, $blocksize, chr(0x00)); 
    $ipad = str_repeat(chr(0x36), $blocksize); 
    $opad = str_repeat(chr(0x5c), $blocksize); 
    $hmac = pack('H*',$hashfunc(($key^$opad).pack('H*', $hashfunc(($key^$ipad) . $data)))); 
    return $hmac; 
} 

function oauthHMACsha1($key, $data) { 
    return base64_encode(HMACsha1($key, $data)); 
} 

或者,它可以更容易/更有效?爲什麼簽名很重要?

回答