2009-10-05 18 views
13

Sto tentando di autenticarsi su YouTube tramite la loro API di dati e ho semplicemente bisogno di sapere come devono essere tradotte le intestazioni dal loro esempio (sotto) alle chiamate di funzione PHP + CURL. La parte confusa è la parte Autorizzazione, che rompe l'accoppiamento nome/valore con il proprio insieme di coppie nome e valore.Come utilizzare OAuth con PHP e cURL?

This documentation va tutto bene tranne che non so come formattare ciò che richiedono nelle intestazioni.

Il loro esempio:

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 

Questo non ha bisogno di essere di fantasia, ho solo bisogno di fare lo scambio di chiavi per un account in modo da poter caricare automaticamente video. Semplicemente non so come formattare gli elementi Autorizzazione in un array di intestazioni per il mio

Aiuto?

risposta

18

Non ho usato l'youtube api ma ho creato la mia API REST utilizzando OAuth per un'applicazione web.

l'intestazione dovrebbe essere: application/x-www-form-urlencoded e come esempio dire, i parametri come oauth_consumer_key, oauth_signature_method, oauth_signature ecc .. devono essere inviati tramite posta, quindi è necessario metterla come questo:

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

spero che aiuta: D

saluti.

+0

non ho avuto l'opportunità di testare questo, ma sembra che un esempio completo così ho intenzione di segnare accettato. Se io (o qualcun altro) scopro un problema con quanto sopra usato contro l'API di YouTube, aggiornerò. (Hai anche un paio di voti positivi, quindi c'è.) –