I'm getting a 401 error on the last bit, but I'm pretty sure it's
because I'm not signing it correctly. That is, I really have no idea
what I'm doing--most things in the Google API Documentation have been
pretty straightforward and laid out well, but there's most certainly
nothing regarding *how* to go about creating signatures. Maybe this is
supposed to be self-evident? Either way, I have not worked much with
keys/signatures/etc, ever, and tend to have issues when they come up.

So! Here's my code thus far (the important bits, anyways):

First, the user starts out by just getting a token:

<form method="post" action="https://www.google.com/accounts/
AuthSubRequest" name="youtubeupload">
<input type="hidden" name="next" value="http://www.gunschbunsch.com/
v370/vBTube.php?do=upload&action=videodetails" />
<input type="hidden" name="scope" value="http://gdata.youtube.com"; />
<input type="hidden" name="session" value="0" />
<input type="hidden" name="secure" value="0" />
<a href="javascript:document.youtubeupload.submit();">Upload a Video</
a>
</form>

This all works fine. It redirects back to my page, which sends the
token along to another page of mine, then submits this data:


function do_post_request($url, $data, $optional_headers = null) {
        $start = strpos($url,'//')+2;
        $end = strpos($url,'/',$start);
        $host = substr($url, $start, $end-$start);
        $domain = substr($url,$end);
        $fp = pfsockopen($host, 80);
        if(!$fp) return null;
        fputs ($fp,"POST $domain HTTP/1.1\n");
        fputs ($fp,"Host: $host\n");
        if ($optional_headers) {
                fputs($fp, $optional_headers);
        }
        fputs ($fp,"Content-type: application/atom+xml; charset=UTF-8\n");
        fputs ($fp,"Content-length: ".strlen($data)."\n\n");
        fputs ($fp,"$data\n\n");
        $response = "";
        while(!feof($fp)) {
                $response .= fgets($fp, 1024);
        }
        fclose ($fp);
        return $response;
}

        $data = "... this bit isn't important, but it is XML for
youtube ...";
        $headers = "";
        $headers .= "Authorization: AuthSub token=\"" .
urlencode($_POST['token']) . "\" ";
        $headers .= "data=\"POST http://gdata.youtube.com/action/GetUploadToken
" . time() . " ";
        $headers .= $rand . "\" sig=\"" . ... okay, really, what goes here? .
"\" ";
        $headers .= "sigalg=\"rsa-sha1\"" . "\r\n";
        $headers .= "X-GData-Client: " . $options['youtube_clientid'] . "\r
\n";
        $headers .= "X-GData-Key: key=" . $options['youtube_developer_key'] .
"\r\n";
        $upload_token = do_post_request('http://gdata.youtube.com/action/
GetUploadToken', $data, $headers);



Before I went for the secure token at the beginning, everything was
fine, so I know I've got most everything working. The one issue I'm
left with is figuring out what to do from here. I generated a PEM
certificate with the Java keytool, uploaded that to Google, and now
I'm stuck with only a PEM certificate and a passphrase to go with it,
wondering how to make the signature asked for in the "sig" bit of the
"Authorization" header.  I did see that PHP has openssl_* functions,
but I wasn't able to get anything to work with those--would a PEM
certificate from keytool simply not work with those? I assumed they'd
be compatible, but then again, I obviously don't know a whole lot.

So, in short, really all I'm looking for is what's needed to generate
the signature there. Any advice would be greatly appreciated.

- Jesse
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Data Protocol" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-help-dataapi?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to