2

私は非常に疲れていて、3 日間眠れず、1 つのことで立ち往生しています。この 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;

私はすべてのAuthentication、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 に答える