我目前正在使用Podio JS SDK连接到podio REST API。我已设置登录屏幕以使用username and password authentication流程捕获用户名和密码。
我可以提出请求并获取我需要的信息。在我的一个请求中,我收到了一个图片网址。然后我将img url放入一个像这样的图像标签,
<img src="img.url"/>
问题是我的客户无法查看图片。我在Working with files看了一下,以便找到答案。
问题是图像只能由当前登录的用户在客户端中查看,但我已经过身份验证。
我错过了什么吗?我如何显示图像,因为我已经使用用户名和密码登录,我将access_token,refresh_token等存储在本地存储中,并且可以进行所有其他必要的调用。
答案 0 :(得分:0)
尝试通过标题发送图像。 这曾经有用,虽然这是一个非常笨重的解决方案。 可能会被新的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;
希望它有所帮助。
答案 1 :(得分:0)
虽然您拥有访问令牌并且可以使用Scala doc访问所有podio数据,但Podio的身份验证基于Cookie,因此如果您的客户未通过podio网络进行身份验证应用程序的登录屏幕,您的客户无法直接从网络应用程序读取图像。您的访问权限将被阻止。
<强>解决方案强>
如果您没有通过客户端进行身份验证,但可以访问api,则可以从此处下载原始图像数据:https://api.podio.com/file/{{imgId}}/raw
。获得原始图像数据后,您可以将数据编码为base64格式,如果是Web客户端,则使用username and password authentication作为客户端src
标记的<img>
。< / p>