2009-10-05 60 views
13

我试图通过他们的Data API向YouTube进行身份验证,并且只需要知道如何将标题从其示例(下面)转换为PHP + CURL函数调用。令人困惑的部分是授权部分,它使用它自己的一组名称和值对来打破名称/值的配对。如何在PHP和cURL中使用OAuth?

This documentation是一切都很好,除了我不知道如何格式化他们需要的标题。

他们的榜样:

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 

这并不需要有想象力,我只是需要做密钥交换的一个帐户,所以我可以自动上传视频。我只是不知道如何将授权项目格式化为我的标题阵列

curl_setopt($ch, CURLOPT_HEADER, $headers); 

帮助?

回答

18

我之前没有使用过youtube API,但是我已经使用OAuth为Web应用创建了自己的REST API。

标题应该是:应用程序/ x-WWW窗体-urlencoded 并作为例子说,该参数oauth_consumer_key,oauth_signature_method,oauth_signature等需要使用后发送,所以你需要把它像这样的:

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

我希望它能帮助:d

问候。

+0

我还没有机会来测试这一点,但它看起来像一个完整的例子,所以我将其标记为接受。如果我(或其他人)发现上述针对YouTube API使用的问题,我会进行更新。 (你也有一些upvotes,所以就是这样。) – 2010-09-06 18:37:36