gpt4 book ai didi

perl - 如何使用 Mojo::UserAgent 发出 Oauth 授权的请求?

转载 作者:行者123 更新时间:2023-12-02 21:12:43 25 4
gpt4 key购买 nike

我目前正在努力完成这项工作:

my $ua = Mojo::UserAgent->new;

my $req = Mojo::Message::Request->new;
my $tx = $ua->build_tx(GET => 'https://spreadsheets.google.com/feeds/spreadsheets/private/full');

app->log->info($c->session('token'));
$tx->req->headers->authorization('Bearer ' . $c->session('token'));

其中 $c->session('token') 是我通过 Mojolicious::Plugin::OAuth2 获得的 token .

我只得到一个空回复。通过curl 做同样的事情(我认为)也可以:

curl -v -H "authorization: Bearer the_same_token_as_above" https://spreadsheets.google.com/feeds/spreadsheets/private/full

我做错了什么?

最佳答案

我发现你唯一缺少的是 call to start 。将以下两行添加到代码块对我有用(尽管使用不同的网址/ token ):

$tx = $ua->start($tx);
app->log->info($tx->res->body);

如果您有很多 API 调用需要授权,那么您可能需要尝试 similar to this 的方法,如下图:

my $ua = Mojo::UserAgent->new;

$ua->on(start => sub {
my ($ua, $tx) = @_;
$tx->req->headers->authorization('Bearer <your token here>');
});

my $tx = $ua->get('<your first url here>');
app->log->info("Response body:", $tx->res->body);

my $tx = $ua->get('<your second url here>');
app->log->info("Response body:", $tx->res->body);

# etc...

此技术的优点是,每次您使用该 UserAgent 实例的 get 方法时,它都会触发启动事件监听器并为您添加授权 header .

关于perl - 如何使用 Mojo::UserAgent 发出 Oauth 授权的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32554127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com