masm64 masm64 - 25 days ago 14
ASP.NET (C#) Question

GoogleWebAuthorizationBroker not found exception with .NET Core

I'm trying to access the Google Drive API, and I can successfully log in a user with the use of the Google+ API. I've been following this guide:

https://developers.google.com/drive/v3/web/quickstart/dotnet

I added the needed libraries with the nuget package manager, but still it can't find the GoogleWebAuthorizationBroker class. The weird thing is, that when I add the same Google.Apis.Auth package version 1.18.0 to a simple console application it works flawlessly, but when I add it to my .NET Core 1.0 preview 2 project it simply won't recognize the aforementioned class.

A screenshot including the added packages:
enter image description here

My .NET Core source code (no class found here):
enter image description here

My console application source code and references (the class can be found here for some reason):

enter image description here

enter image description here

Thanks in advance!

Answer

Your console application is running on the full .net framework. That is why GoogleWebAuthorizationBroker is getting resolved there.

I have had the same issues with the Google.Apis against .net core and I ended up running the asp.net Core project on top of the full .net framework. When the Google components work, I plan on switching the framework back to .net core.

I replaced the dotnet framework with the 461 framework like this:

"frameworks": {
    "net461":  {}
  }

And I also had to comment out/remove the dependency on Microsoft.NETCore.App like this:

  "dependencies": {
    "Google.Apis": "1.19.0",
    "Google.Apis.Auth": "1.19.0",
    "Google.Apis.Calendar.v3": "1.19.0.675"
    //"Microsoft.NETCore.App": "1.1.0-preview1-001100-00",
  },

You could also run against both frameworks - I tried doing that, and when you publish the website you go

DOTNET PUBLISH -f 461  

or

DOTNET PUBLISH -f netcoreapp1.0

Depending on the framework. You also then have to select from a dropdown in visual studio, the framework you run against, which ended up being more of a problem. Easier to just comment out the dotnetcore1.0 framework when not needed and just go dotnet publish on my build pipeline ...

There is a thread on the Google .net apis github page about .net core compatibility here. https://github.com/google/google-api-dotnet-client/issues/872#issuecomment-259710682

Expected support for these classes are guesstimated at early 2017.

Hope that help you?

Comments