2

我很累,三天没有睡觉,我卡在一件事情上,这个 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的问题。

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

4

1 回答 1

1

在我看来,您调用post().

文档不是很清楚,但我认为你想要这样的东西:

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

于 2013-09-30T09:56:17.210 回答