Google Drive API: Allows you to upload/download to users accounts or only your own? - google-drive-api

I have a question about Google Drive that I'm hoping other programmers (with experience with the Google Drive API) will be able to answer. Note I have consulted the Google Drive API faqs and example projects but they dont answer my question. I'll provide some context in order for you to better understand my question.
We are developing an Smart Phone app that will allow people to view their civil engineering designs (Highway design, Dam design, Railway design, etc) in a 3d world, ie, showing their 'blue prints' in 3d. The app is being developed in Unity3d (3d Game Engine using C#).
Our plan is to create a Windows .exe (C# WinForms) that will allow the user to upload their blue print file to their own Google Drive account. The app will automatically download their blue prints from their google drive account (all the user has to do is login). Why create a .exe to upload files to a users account and not just get them to do it themselves through a web browser? Because we want to make it easy for the user, eventually provide automatic uploads/updates (when the user edits their project) and ensure that the files will always be in a specific folder on google drive. Thus a .exe will be able to achieve this.
My Question: Does the Google Drive API allow you to upload/download files to a users account. The Drive example projects appear to demonstrate uploading/downloading files to your own business Google Drive account and not a users. For those who have used the Google Drive API in their own projects; what are you charged for? Do you get charged for only downloading and uploading files or do you also get charge for connecting and querying files? If you upload/download files to an external Google Drive account (a users account) do you get charged or do they get charged?

If you have the users login to your app using Oauth2 they give you permission to access there google drive data. They can then download and upload to there account from your app.
Here are a few tutoials i did on this topic. Its a popular question, im working on a few sample apps to go with it.
Google Oauth2 c# Tutorial
Google Drive api C#
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets { ClientId = "YourClientId", ClientSecret = "YourClientSecret" },
new[] { DriveService.Scope.Drive,
DriveService.Scope.DriveFile },
"user",
CancellationToken.None,
new SavedDataStore(myStoredResponse)).Result; }

Related

Google Drive integration with private website

I would like to integrate Google Drive with my private website in such way that user will provide my website with his own Google Drive, and he could perform on my website such actions as: viewing, deleting, adding or editing files. Is is possible? What is needed to do such integration?
I read Google Drive API documentation and I checked it is possible to perform such actions as creating, reading, editing files. But I have no idea how to perform it on someones else private Google Drive.
The first thing you need to understand is that drive api is a rest api the response is returned in Json format. The google drive api is not going to give you any visual representation of a users drive account. For example your not going to be able to show them the google drive web application from your website. You will need to code the interface yoruself.
As for how to get permission we use something called Oauth2 to request consent for your application to access the users google drive account. It can be a little confusing in the beginning but there are a number of tutorials and QuickStart's which should help you get started.

Google Drive API grant access to another/multiple Apps

Currently, we have a mobile App that is storing data into a Google Drive folder using the scope
https://www.googleapis.com/auth/drive.file
View and manage Google Drive files and folders that you have opened or created with this app
Now we are planning to add a web app as well. The problem is, that the web app cannot access files uploaded by the mobile app and vice versa.
So is there a way to tell the Google Drive API that those two apps (web app and the mobile app) are in fact the 'same' application?
I want to avoid using the scope for full access to the user's Google Drive.
https://www.googleapis.com/auth/drive
Or is there another way that both apps can read/write the same folder?
Thanks in advance.
I also took a look at the Google Picker API but it does not seem to be what I want.
Posting this for documentation purposes.
As mentioned in comments, both apps should be part of the same Google Cloud Platform project, that's the only way to "tell" the API that they are the same application.
If they are not part of the same project, you should use the drive scope instead.

google drive API to store files from website

I need to store all the documents that users upload in my website on one Drive account.
These documents are on user's computers. They don't have and do not want to have a Google Drive account.
It is not really clear if the "Google Drive API" can achieve that or if I need "Google Cloud Storage API" that is more expensive for only storing files.
Said API has to create a folder for the documents of each user.
In addition to achieve that, do I need a G suite account?
Thanks a million for your help

What drive does the Google Drive API connect to?

This might be a very silly question, but I'm just trying to make sure I'm going about things for my senior project right. Does the Google Drive API connect to the user's personal Drive space?
Actually it's a very good question because it confuses a lot of first time Drive users.
The answer is, It depends.
There are two distinct Google Drive APIs, with different characteristics and capabilities. These are the Google Drive REST API and the Google Drive Android API (GDAA). You have tagged your question with both.
The Google Drive REST API can connect to any Drive account, e.g. your own, one of your users, or a Service Account. Which account it connects to is determined by how the Access Token was generated.
The GDAA only connects to the Google account associated with the Android device it's running on.

Access to all files on a user's Google Drive

The api's for SkyDrive and Dropbox have options for managing the user's entire drive. For Google Drive, the drive.file scope seems to give only access to the files created by the app.
Is there a scope for Google Drive that gives access to the entire drive?
Edit: The below answer was correct, but the latest version of the Drive API allows requesting of a full scope with https://www.googleapis.com/auth/drive. The Documents List API is no longer needed for this use case. See https://developers.google.com/drive/scopes#requesting_full_drive_scope_for_an_app
To be precise the Drive API gives access to Files created by the app and files that the user has opened with the app from the Drive UI (through open-with).
To manipulate all of the Drive files of the user you can use the Google Document List API . Though we currently forbid Drive applications (the ones that have get integrated in the Drive UI through the Open-with and Create dialogs) to request access to the Document List API as we want to keep Drive application on a per-file security model. (Basically adding the Document List scope in the Drive SDK settings raises an error).