2013-09-28 35 views
2

我很累,三天没有睡觉,并且Im卡在1件东西, 这个youtube上传的东西。Youtube API:恢复上传*需要用户认证*

这个非常简单的POST过程总是会导致:“用户身份验证要求”

这是林争相模仿:

POST /resumable/feeds/api/users/default/uploads HTTP/1.1 
Host: uploads.gdata.youtube.com 
Authorization: Bearer ACCESS_TOKEN 
GData-Version: 2 
X-GData-Key: key=adf15ee97731bca89da876c...a8dc 
Content-Length: 0 
Slug: my_file.mp4 

到目前为止,这是香港专业教育学院做了什么:

#!/usr/bin/perl 

use 5.010; 
use strict; 
use warnings; 
use LWP::Simple; 


    my $r = LWP::UserAgent->new()->post(
    "https://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads", 
     Content_Type => "application/atom+xml; charset=UTF-8", 
     [ 
     'POST /resumable/feeds/api/users/default/uploads HTTP/1.1', 
      Host   => "uploads.gdata.youtube.com", 
      'Authentication' => "Bearer xxxxxx", 
      'GData-Version' => "2", 
      'X-GData-Key' => "key=xxxxx", 
      Content_Length => "0", 
      'Slug' => "C:/YouTube.wmv", 
     ] 
    ); 

    say $r->content; 

我试过每个认证,Oath2,clientLogin, 我可以登录并获取access_token,问题是我c上传,

我喜欢perl,我讨厌没有使用perl的youtube支持库(这里有,但是它的极其过时和直接的上传功能没有明确记录,或者根本没有) 请帮助我,我非常需要这个,我真的很困难,我不知道问题是出在我身上还是youtube的。

感谢您花时间阅读本文,非常感谢。

+2

您确定您的验证令牌有效吗?也就是说,除了上传工作外,还有其他方法吗?另外,没有用于Perl的youtube库,因为没有人关心编写和发布Perl库。上传你在github上工作的任何东西,然后就可以运行你的代码,查看出了什么问题并将其解决。 – JackTheRandom

回答

1

对我来说,就像你对post()的呼叫使用了错误的语法。

documentation是真不明白,但我想你想是这样的:

my $r = LWP::UserAgent->new()->post(
    'https://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads', 
    Content_Type => "application/atom+xml; charset=UTF-8", 
    [ 
     Host   => "uploads.gdata.youtube.com", 
     'Authentication' => "Bearer xxxxxx", 
     'GData-Version' => "2", 
     'X-GData-Key' => "key=xxxxx", 
     Content_Length => "0", 
     'Slug'   => "C:/YouTube.wmv", 
    ] 
); 

你并不需要一个线,明确要求POST()post()方法可以做到这一点。