AppSheet not rendering images from GCP buckets

Hi,
I created an app in which I would like to present images stored in a GCP bucket.
I tried using the image's Authenticated URL, its gsutil URI and a signed URL but none of these worked...

I still cannot see the image presented in the App.

To clarify - if I add URLs of images available on the web - the rendering works just fine.

Any ideas?

Solved Solved
0 8 236
1 ACCEPTED SOLUTION

For future reference...

To present a signed url (at least from GCP buckets) you need to quote encode it.

import urllib
app_sheet_friendly_url = urllib.parse.quote(signed_image_url)

View solution in original post

8 REPLIES 8

Steve
Platinum 4
Platinum 4

I have no experience with GCP.

AppSheet can only display images with URLs that are publicly accessible, meaning the app user doesn't need to be logged in anywhere to load the image from the URL in a browser.

Signed URLs are publicly available

I have an app using images hosted on a web server, but you need to set them public like Steve suggested. To do this you may check the software settings or you may need help from the server admin.

If you can see them on any web browsers using their URL, you can use them on AppSheet.

@Steve @Swoopy thanks for your replies - but the signed URLs are publicly available - so that's not the problem...

When I debugged the network I saw that AppSheet removes some of the URL parameters - and that's why it fails. To illustrate: 

Notice that the last two parameters of the signed URL were dropped.
This means that the signed url is missing information to be interpreted properly.

Is this an AppSheet bug?

 

I wouldn't call it a bug; I'd say what you're trying to do is unsupported.

Thanks @Steve - but please enlighten me as of "why"...
A signed URL is a public url to the image - which according to what I read in the documentation - should be supported.

You're trying to pass URL parameters through AppSheet to the underlying storage. That is not supported. Why? Because it would be a security risk.

For future reference...

To present a signed url (at least from GCP buckets) you need to quote encode it.

import urllib
app_sheet_friendly_url = urllib.parse.quote(signed_image_url)
Top Labels in this Space