// upgrade a single-use AuthSub token
$response = signedGET('https://www.google.com/accounts/AuthSubSessionToken', $singleUseToken);
// fetch Calendar data
$response = signedGET('http://www.google.com/calendar/feeds/default/allcalendars/full', $sessionToken);
<?php
function signedGET($requestURL, $token) {
$privKeyFilePath = "../myrsakey.pem";
$timestamp = time();
$nonce = md5(microtime() . mt_rand());
$sigalg = 'rsa-sha1';
// construct the data string
$data = "GET $requestURL $timestamp $nonce";
// get rsa private key
$fp = fopen($privKeyFilePath, "r");
$priv_key = fread($fp, 8192);
fclose($fp);
// compute signature
$privatekeyid = openssl_get_privatekey($priv_key);
openssl_sign($data, $signature, $privatekeyid, OPENSSL_ALGO_SHA1);
openssl_free_key($privatekeyid);
$curl = curl_init($requestURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// Set Authorization header
$sig = base64_encode($signature);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"Authorization: AuthSub token=\"$token\" data=\"$data\" sig=\"$sig\" sigalg=\"$sigalg\"")
);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
?>
6 comments:
Thank you for this.
Is there a tool you would recommend to generate the .pem keys ?
openssl works great:
http://code.google.com/apis/gdata/authsub.html#Registered
Eric, thank you very much for that tips
can I use the signedGET to get the private/ protected blogs
Please suggest
Way the nonce should be generated has been changed. Using the md5 might not be appropriate any longer.
"nonce: a random 64-bit, unsigned number encoded as an ASCII string in decimal."
Hey friend,
What is value of $signature in line no 18
And i Got error :
Call to undefined function openssl_get_privatekey()
please help me..
Post a Comment