2009-10-05 33 views
13

Estoy tratando de autenticar a YouTube a través de su API de datos y simplemente necesito saber cómo los encabezados deben traducirse de su ejemplo (a continuación) a las llamadas de función PHP + CURL. La parte confusa es la porción Autorización, que rompe el emparejamiento nombre/valor con su propio conjunto de pares de nombre y valor.¿Cómo uso OAuth con PHP y cURL?

This documentation está muy bien, excepto que no sé cómo formatear lo que requieren en los encabezados.

Su ejemplo:

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 

Esto no tiene por qué ser de lujo, sólo necesito para hacer el intercambio de claves para una cuenta para que pueda subir videos de forma automática. Sólo que no sé cómo dar formato a los elementos de autorización en una matriz encabezados por mi ayuda

curl_setopt($ch, CURLOPT_HEADER, $headers); 

?

Respuesta

18

no he utilizado la API de youtube antes, pero he creado mi propia API REST utilizando OAuth para una aplicación web.

la cabecera debe ser: urlencoded-x-www-formulario de solicitud/ y como ejemplo decir, los parámetros como oauth_consumer_key, oauth_signature_method, etc .. oauth_signature que ser enviado a través de correo, por lo que necesita para ponerlo como esto:

 $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")); 

espero que ayude: D

Saludos.

+0

No he tenido la oportunidad de probar esto, pero parece que un ejemplo completo, así que voy a marcar aceptó. Si yo (u otra persona) descubro un problema con el anterior usado contra la API de YouTube, lo actualizaré. (También tienes un par de upvotes, así que ahí está). –