Access is denied after deploying while accessing Google Drive Api


Developing MVC application with Google OAuth to access drive API. While I was accessing Google API in the development environment it works just fine. But when I deploy it in IIS or Shared hosting it shows access denied with below exception.

[Win32Exception (0x80004005): Access is denied]

 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) +602
   System.Diagnostics.Process.Start(ProcessStartInfo startInfo) +60
   Google.Apis.Auth.OAuth2.<ReceiveCodeAsync>d__14.MoveNext() +265

[NotSupportedException: Failed to launch browser with "" for authorization. See inner exception for details.]
   Google.Apis.Auth.OAuth2.<ReceiveCodeAsync>d__14.MoveNext() +1029
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +31
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +60
   Google.Apis.Auth.OAuth2.<AuthorizeAsync>d__8.MoveNext() +730
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +31
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +60
   Google.Apis.Auth.OAuth2.<AuthorizeAsync>d__4.MoveNext() +571
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +31
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +60
   Google.Apis.Auth.OAuth2.<AuthorizeAsync>d__1.MoveNext() +438

Things I have tried :

  1. Verify Domain in google dev console.
  2. Change protocol from HTTP to https
asked on Stack Overflow Mar 2, 2018 by Khaled Md. Tuhidul Hossain • edited Mar 2, 2018 by Md. Alim Ul Karim

1 Answer


This article helped me to resolve this issue: Implementing OAuth2.0 Authorization For Google In ASP.NET.

How it works (by article):

    1. Create Web Server client_secret.json.
    1. GetAuthorizationUrl() - create url for get toke temporary token.
    1. Redirect to GoogleCallback() and get refresh and access tokens using ExchangeAuthorizationCode().
    1. Save them to the file "~/Resources/driveApiCredentials/drive-credentials.json/Google.Apis.Auth.OAuth2.Responses.TokenResponse-{account}".
    1. Use this saved tokens.

After that just use google authentication for drive:

     // Client for requests
    private DriveService client;
    // Class constructor
    public GoogleDrive(string account)
        UserCredential credential;
        Login = account;
        // Load Web Secret file
        using (var stream =
            new FileStream(System.Web.HttpContext.Current.Server.MapPath($"~/Resources/client_secret_{account}.json"), FileMode.Open, FileAccess.Read))
            // Path to token folder 
            string credPath = System.Web.HttpContext.Current.Server.MapPath(Path.Combine("~/Resources/driveApiCredentials", "drive-credentials.json"));

            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                new FileDataStore(credPath, true)).Result;
            //Console.WriteLine("Credential file saved to folder: " + credPath);

        // Create Drive API service.
        var service = new DriveService(new BaseClientService.Initializer()
            HttpClientInitializer = credential,
            ApplicationName = account,

        client =  service;

This code use tokens loaded before for initialize DriveService.

answered on Stack Overflow Oct 24, 2018 by Denis V • edited Jun 26, 2020 by Denis V

User contributions licensed under CC BY-SA 3.0