使用 google 幻灯片 API 添加图像时出现权限问题
Permission problems when adding a image with google slides API
我正在尝试使用 Google 幻灯片向幻灯片添加图像 API。
我的要求
https://slides.googleapis.com/v1/presentations/1nuZwR325hRmmgzyZNMZ0r6bUFanrREWD-t5sF2pGYeo::batchUpdate
有这个负载:
{
"requests" => [
{
"createImage" => {
"elementProperties" => {
"pageObjectId" => "SLIDES_API2078288406_0"
},
"url" => "https://drive.google.com/uc?id=1Meo1eMAUHV59DNzwjwU_SX4BFds7HZID&export=download"
}
}
]
}
但失败并显示以下响应:
{
"error" => {
"code" => 400,
"message" => "Invalid requests[0].createImage: Access to the provided image was forbidden.",
"status" => "INVALID_ARGUMENT"
}
}
即使检查文件权限 returns 此响应:
{
"kind": "drive#permissionList",
"permissions": [
{
"kind": "drive#permission",
"id": "anyoneWithLink",
"type": "anyone",
"role": "reader",
"allowFileDiscovery": false
},
{
"kind": "drive#permission",
"id": "14156222269725841761",
"type": "user",
"role": "owner"
}
]
}
和
- 通过
insert -> image -> by URL
手动插入相同的图像效果很好
- 并且使用 curl 下载图像也可以正常工作
尽管我使用 Mojo::UserAgent 来执行此操作,但(对我而言)这似乎是一个与语言无关的问题(因此缺少“perl”标签)。无论如何,下面的代码,以防万一:
helper 'google_add_image_to_slide_p' => sub {
my $c = shift;
my $img_id = shift;
my $pres_id = shift;
my $page_id = shift;
$c->log->info("adding image $img_id to page $page_id");
my $update = {
requests => [
{
"createImage" =>
{
elementProperties => { pageObjectId => $page_id },
url => "https://drive.google.com/uc?id=1Meo1eMAUHV59DNzwjwU_SX4BFds7HZID&export=download",
}
}
]
};
$c->app->ua->post_p('https://slides.googleapis.com/v1/presentations/' . $pres_id . ':batchUpdate', json => $update);
};
所以问题是:为什么我收到无效的请求响应?
https://drive.google.com/uc?id=1Meo1eMAUHV59DNzwjwU_SX4BFds7HZID&export=download
似乎是来自 google 驱动器文件的网络link下载link。为了让您访问它,您必须有权访问文件本身。你不能只发送这个 link api 将无法阅读它。
将文件上传到不包含附加权限的位置。
我正在尝试使用 Google 幻灯片向幻灯片添加图像 API。
我的要求
https://slides.googleapis.com/v1/presentations/1nuZwR325hRmmgzyZNMZ0r6bUFanrREWD-t5sF2pGYeo::batchUpdate
有这个负载:
{
"requests" => [
{
"createImage" => {
"elementProperties" => {
"pageObjectId" => "SLIDES_API2078288406_0"
},
"url" => "https://drive.google.com/uc?id=1Meo1eMAUHV59DNzwjwU_SX4BFds7HZID&export=download"
}
}
]
}
但失败并显示以下响应:
{
"error" => {
"code" => 400,
"message" => "Invalid requests[0].createImage: Access to the provided image was forbidden.",
"status" => "INVALID_ARGUMENT"
}
}
即使检查文件权限 returns 此响应:
{
"kind": "drive#permissionList",
"permissions": [
{
"kind": "drive#permission",
"id": "anyoneWithLink",
"type": "anyone",
"role": "reader",
"allowFileDiscovery": false
},
{
"kind": "drive#permission",
"id": "14156222269725841761",
"type": "user",
"role": "owner"
}
]
}
和
- 通过
insert -> image -> by URL
手动插入相同的图像效果很好 - 并且使用 curl 下载图像也可以正常工作
尽管我使用 Mojo::UserAgent 来执行此操作,但(对我而言)这似乎是一个与语言无关的问题(因此缺少“perl”标签)。无论如何,下面的代码,以防万一:
helper 'google_add_image_to_slide_p' => sub {
my $c = shift;
my $img_id = shift;
my $pres_id = shift;
my $page_id = shift;
$c->log->info("adding image $img_id to page $page_id");
my $update = {
requests => [
{
"createImage" =>
{
elementProperties => { pageObjectId => $page_id },
url => "https://drive.google.com/uc?id=1Meo1eMAUHV59DNzwjwU_SX4BFds7HZID&export=download",
}
}
]
};
$c->app->ua->post_p('https://slides.googleapis.com/v1/presentations/' . $pres_id . ':batchUpdate', json => $update);
};
所以问题是:为什么我收到无效的请求响应?
https://drive.google.com/uc?id=1Meo1eMAUHV59DNzwjwU_SX4BFds7HZID&export=download
似乎是来自 google 驱动器文件的网络link下载link。为了让您访问它,您必须有权访问文件本身。你不能只发送这个 link api 将无法阅读它。
将文件上传到不包含附加权限的位置。