Forum Xamarin.Forms

Xamarin Forms upload/download files to Google Drive

7VN7VN USMember ✭✭


Pardon the ignorance but I am new to XF and am trying to wrap my head around this.

I had asked a previous question on uploading a file to OneDrive through my XF app. I got it to work and will post a solution.

The problem I am now facing is doing the same thing but for GoogleDrive. I have read much on how to do this and it seems very cumbersome. Has anyone successfully done this and if so is there a sample project any where.

After searching the web I did create a Drive API at

In my XF app I did this:

private static async Task SignInToGoogleDrive()
string[] Scopes = { DriveService.Scope.DriveReadonly, DriveService.Scope.DriveFile };

        GoogleWebAuthorizationBroker.Folder = "Google.Apis.Util.Store.FileDataStore";
        UserCredential credential;

            using (var stream = new FileStream(App.GoogleJsonFilePath, FileMode.Open, FileAccess.Read))
                credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                    Scopes, "user", 

            // Create the service.
            var service = new DriveService(new Google.Apis.Services.BaseClientService.Initializer()
                HttpClientInitializer = credential,
                ApplicationName = "GarageMaster",

            // Define parameters of request.
            FilesResource.ListRequest listRequest = service.Files.List();
            listRequest.PageSize = 10;
            listRequest.Fields = "nextPageToken, files(id, name)";

            // List files.
            IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute()
        catch (Exception ex)
            int testStop = 0;

        int testStop1 = 0;

I followed, what I think is correct, from the Google Api examples, and created a json file. I put it in my project and load it as a stream. That is what, in the above code, App.GoogleJsonFilePath is.

Now to be quite honest, I really don't know what this line does:

GoogleWebAuthorizationBroker.Folder = "Google.Apis.Util.Store.FileDataStore";

so I am going about this a bit blindly.

The above does compile, but when it gets to this line,
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(…..

flow goes to the Catch statement and the error is:

ex = {System.NotSupportedException: Failed to launch browser with "

I really don't know where to go from this point and any help would be appreciated.



Sign In or Register to comment.