2011-07-19 9 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)); 
} 

もっと簡単で効率的ですか?そしてなぜ署名が重要なのですか?

答えて