2009-10-05 7 views
13

J'essaye de m'authentifier sur YouTube via leur API de données et j'ai simplement besoin de savoir comment les en-têtes devraient être traduits de leur exemple (ci-dessous) en appels de fonction PHP + CURL. La partie confuse est la partie Autorisation, qui interrompt l'appariement nom/valeur avec son propre ensemble de paires nom/valeur.Comment utiliser OAuth avec PHP et cURL?

This documentation est très bien sauf que je ne sais pas comment formater ce dont ils ont besoin dans les en-têtes.

Leur exemple:

POST /accounts/OAuthGetRequestToken HTTP/1.1 
Host: https://www.google.com 
Content-Type: application/x-www-form-urlencoded 
Authorization: OAuth 
       oauth_consumer_key="example.com", 
       oauth_signature_method="RSA-SHA1", 
       oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", 
       oauth_timestamp="137131200", 
       oauth_nonce="4572616e48616d6d65724c61686176", 
       oauth_version="1.0" 
scope=http://gdata.youtube.com 

Cela n'a pas besoin d'être de fantaisie, je dois juste faire l'échange de clés pour un compte afin que je puisse télécharger des vidéos automatiquement. Je ne sais pas comment formater les éléments d'autorisation dans un tableau d'en-têtes pour mon

curl_setopt($ch, CURLOPT_HEADER, $headers); 

Aide?

Répondre

18

Je n'ai pas utilisé l'API YouTube auparavant, mais j'ai créé ma propre API REST en utilisant OAuth pour une application web.

l'en-tête doit être: application/x-www-form-urlencoded et comme l'exemple dire les paramètres que oauth_consumer_key, oauth_signature_method, oauth_signature etc .. doivent être envoyées à l'aide d'après, vous devez le mettre comme ceci:

 $header[]   = 'Content-Type: application/x-www-form-urlencoded'; 

      curl_setopt($ch, CURLOPT_HTTPHEADER,  $header); 
      curl_setopt($ch, CURLOPT_POST,  true); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode("oauth_consumer_key=example.com& 
      oauth_signature_method=RSA-SHA1& 
      oauth_signature=wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D& 
      oauth_timestamp=137131200& 
      oauth_nonce=4572616e48616d6d65724c61686176& 
      oauth_version=1.0")); 

J'espère que cela aide: D

Cordialement.

+0

Je n'ai pas eu l'occasion de tester cela, mais il ressemble à un exemple complet alors je vais le marquer accepté. Si je (ou quelqu'un d'autre) découvre un problème avec ce qui précède utilisé contre l'API YouTube, je vais mettre à jour. (Vous avez aussi quelques upvotes, donc il y a ça.) –

Questions connexes