VL Google Calendar API help

vl

#1

Hi,
I wonder if VL would be a good option to make Google Calendar API calls based on OAuth2.

There is a .NET Library for that https://developers.google.com/calendar/quickstart/dotnet

How could that Lib possibly be imported in VL?

And of course, How could a VL patch look like that can do such an API Call successfully :)

edit: I should note its only for accessing and updating my own calendar, not the one of others


#2

https://vvvv.gitbooks.io/the-gray-book/content/en/reference/libraries/using-net-libraries.html

https://vvvv.gitbooks.io/the-gray-book/content/en/reference/libraries/dependencies.html

those will be a quick start on how to import libraries. next step would be to re-build the basic example in vl.


#3

oh, looks like vl can’t create an instance of GoogleWebAuthorizationBroker.AuthorizeAsync from the nodebrowser because of some amigious reference thingy…

as i see it, the system can’t choose from 2 overloads because we can only select overloads by inputs and not by outputs in the nodebrowser?

it’s still dragable from the Solution Explorer but that’s not that comfortable as one would suggest.


#4

Hey Sebl,
Thanks I was able to follow you along and also got that error

00:28:07 ERR : Could not load file or assembly ‘Google.Apis, Version=1.34.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab’ or one of its dependencies. Das System kann die angegebene Datei nicht finden.
00:28:07 ERR : Exception occured in TMPluginWrapperNode.Evaluate

This is just for the protocoll.

Because actually i found out it is also possible to not go the route via the user authentication, which is basically for accessing calenars of any kind of users.
Instead, if you want to access only your own calendar and change events there, its possible to use an service account.

Then the code looks different and doesnt require that GoogleWebAuthorizationBroker.AuthorizeAsync

Here is how it would actually look like in code with a service account:

Clicking around with those functions now, lets see if i can get something to work. But still struggling with the general workflow and what to connect with what

Here is a good explanation how to create a service account for test purpose

edit: i was adding the dependencies with nuget and then manually as files, after selecting the dependencies they show up, but when loading nodes most of the time it throws

System.IO.FileNotFoundException in mscorlib: Die Datei oder Assembly “Google.Apis.Core, Version=1.34.0.0, Culture=neutral, PublicKeyToken=4b01fa6e34db77ab” oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

And the nodes don`t seem to work


#5

thanks for reporting, tracked.


#6


poc


#7

one step further:
image

leads to:
image

harr…


#8

GoogleCalendar.7z (14.8 KB)
that may be a start


#9

Amazing, thank you that looks very promising.

Can you explain what the directory in UserCredentials should do?

ALso ToInt64 stays red.


#10

The Directory is a place where the credential token is safed once you logged in. (A browser with gmail login should pop up). from there on you don’t need to login again if that token file is present at that location. at least that’s how i understood it without reading any documentation :)

regarding ToInt64: not the freshest alpha? Or maybe try re-adding the Node…

Why is that UserCredential Node red?

i modularized that thing a bit and queried further things like a list of all calendars.
GoogleCalendar.7z (22.7 KB)


#11

thanks @sebl you just closed one of my internal github issues ;)


#12

harr!

ok, now go ahead and solve this issue:

[ ] #24567 | release VL.Standalone


#13

wow, sebl i am realy impressed!
Hardly can follow what is going on here.

If you are up for writing a bit about your method of approaching the “plugging together” of a completely unknown library, this would be very insightfull.

But most of all, thanks!


#14

It looks like he almost 1:1 just repatched the C# example in the quickstart guide you posted in your first post.
Pay close attention to the Classes and Variable Naming, you will figure out what’s happening then.
They set up the request parameters before executing it, which is almost the entire upper part of sebl’s patch as well.
After that it’s just another loop for the items.