Podio Javascript SDK:客户端限制显示来自Podio的图像

Podio Javascript SDK: Client Restricted from displaying Image from podio

本文关键字:Podio 图像 显示 Javascript SDK 客户端      更新时间:2023-09-26

我目前正在使用Podio JS SDK连接到Podio REST API。我已经设置了一个登录屏幕,以便使用用户名和密码身份验证流捕获用户名和密码。

我可以提出请求并得到我需要的信息。在我的请求之一,我收到一个图像url。然后将img url放入图像标记中,如下所示

<img src="img.url"/> 

问题是我的客户端无法不查看图像。我在这里看了看处理文件是为了找到答案。

问题是图像只能由当前登录的用户在客户端中查看,但我已经进行了身份验证。

我错过了什么吗?我怎么能显示图像,因为我已经登录了用户名和密码,我存储access_token, refresh_token等在本地存储,可以使所有其他必要的调用。

尝试通过标头发送图像。这在过去是可行的,尽管这是一个相当笨拙的解决方案。可能会被新的PodioAPI弃用。

首先设置你的函数。

function showImage($item, $index, $id, $style = '', $class='', $alt='',$imgtitle='') {
foreach($item->fields as $field) {
    if($field->field_id== $id) {
        $picture_id = $field->values[$index]['value']['file_id'];
        echo "<img style='$style' class='$class' src='getImage.php?id=$picture_id' alt='$alt' title='$imgtitle' />";
        global $picture_id;
    }
}
}

这将是您的getimage.php。你也可以像这样设置一个PDF。

$img_id = $_GET['id'];
$cache = new cache(
        ...
        );
$file_id = "image{$img_id}";
if(!$cache->has($file_id)) {
    $file = $cache->set($file_id, PodioFile::get($img_id));
} else {
    $file = $cache->get($file_id);
}
$picture_id = "image_cache_{$img_id}";
if(!$cache->has($picture_id)) {
    $image = $cache->set($picture_id, Podio::get($file->link, array(), array('file_download' => true))->body);
} else {
    $image = $cache->get($picture_id);
}
header('Content-Type: image/png');
echo $image;

希望能有所帮助。

虽然你有一个访问令牌,可以通过使用用户名和密码认证访问你所有的podio数据,podio的认证是基于cookie的,所以如果你的客户端不通过podio web应用程序的登录屏幕进行认证,你的客户端将无法直接从web应用程序读取图像。你的访问将被阻止。

<

解决方案/strong>

如果您不通过客户端进行身份验证,但可以访问api,则可以从这里下载原始图像数据:https://api.podio.com/file/{{imgId}}/raw。一旦你得到原始图像数据,你可以将数据编码为base64格式,你使用一个数据URI作为<img>标签的src在你的客户端,如果它是一个web客户端。