Search code examples
oauth-2.0google-docs-apigoogle-drive-api

Downloading from Google Docs using an Uri containing access_token


I'm creating a viewer app for Windows Phone 7. The app already handles the OAuth2 stuff and succesfully browses Google Doc's folder structure.

I use Google Documents List API 3. BTW browsing works perfectly without using request headers, instead I append the access_token to the request Uri.

Now the app needs to show files to the user, if possible without downloading them first. This means that I want to set the UI's Image.Source to the Uri of an image, the UI's MediaElement.Source to the Uri of a video and the BackgroundAudioPlayer.Track.Source to the Uri of an audio file. Obviously I can't use request headers in this scenario.

However it seems that simply appending the access_token to the download Uri doesn't work. The UI elements fail with generic error messages, and if I manually try with a web browser (which isn't logged in to Google) it shows an empty screen, a 401 error or it redirects to Google's login page.

Is it possible to download/stream a Google Data entry just by defining the Uri? If yes, what does the Uri need to look like?


Solution

  • Support for authorization using the access_token URL parameter has not been allowed on purpose for security reasons. Basically if a user would be to open a malicious file on a browser (e.g html containing some Javascript would suffice) the malicious code on the file could steal the access token in the URL and send it to a third party bad guy.

    To access the file you need to authorize using "Authorization" HTTP header. Simply add an HTTP header to the request which is like:

    Authorization: Bearer access_token_here