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

时间:2015-09-16 16:10:02

标签: javascript html angularjs ionic-framework podio

我目前正在使用Podio JS SDK连接到podio REST API。我已设置登录屏幕以使用username and password authentication流程捕获用户名和密码。

我可以提出请求并获取我需要的信息。在我的一个请求中,我收到了一个图片网址。然后我将img url放入一个像这样的图像标签,

<img src="img.url"/> 

问题是我的客户无法查看图片。我在Working with files看了一下,以便找到答案。

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

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

2 个答案:

答案 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>