Youtube API:恢复上传*需要用户身份验证*

时间:2013-09-28 23:18:28

标签: perl api upload youtube

我很累,三天没睡觉,我坚持一件事, 这个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的。

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

1 个答案:

答案 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()方法会为您做到这一点。