我很累,三天没睡觉,我坚持一件事, 这个youtube上传的东西。
这个非常简单的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,问题是我无法上传,
我喜欢perl而且我讨厌使用perl没有youtube支持库的事实(有,但它极其过时和直接的上传功能没有明确记录或根本没有) 请帮助我,我需要这个,我真的很困惑,我不知道问题是否属于我,或者是youtube的。
感谢您花时间阅读本文,非常感谢。
答案 0 :(得分: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()
方法会为您做到这一点。