I'd like for my app to add/delete/update events on a user's Google Calendar. The app only needs to delete and update events that the app itself has added.
Have I understood it correctly, that in order for this to work, the users have to give the app full access to their Google Calendars, meaning that the app could potentially read and delete private events on any calendar?
Or, is there a way to limit the access that a user gives to the app, for example, allowing the app to create a single calendar and only giving it access to events on that one calendar?
I've read through the relevant Google Calendar API, and I'm not seeing that this is possible. However, giving full access seems crazy and unnecessary!
It seems that this isn't possible. Google, why!?
What I ended up doing was skipping the API and using a calendar subscription. Limited use since the user needs to be able to set up a subscription and, especially, because Google takes up to a day to update subscribed calendars.
Related
We have a web app that users log into using Firebase Auth. According to our the authentication section of our firebase console, we have 690 user that have created accounts, and we believe that is correct.
According to our Firebase Analytics console, we have 2,100 new users in the past 90 days. I think I understand that Firebase Analytics tracks users with a device ID (?). So, if this were a iOS app, an uninstall and install would trigger a a new user counted in analytics. But, how does this work on a web app? Cookie? Some kind of browser id? A session?
So, I think if we want to track unique users accurately, we would use the set the user id, with this:
https://firebase.google.com/docs/reference/js/firebase.analytics.Analytics#setuserid
Which according to the docs linked above, 'Use gtag 'config' command to set 'user_id'. So it does this: https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id#set_user_id
Which allows the users to be tracked across sessions. Therefore, users should not double count.
Notice that the setUserId section in the firebase analytics docs does not have a web section (although the setUserID function does exist in the javascript sdk as shown tow links above) https://firebase.google.com/docs/analytics/userid
So... would it then work to get the user id (uid) when they log in (https://firebase.google.com/docs/reference/js/firebase.User). And then use the setUserId method to set the id?
It's unclear because the documentation does not seem to be in one source. I am just trying to put it all together
You are correct that you can use the setUserId API (across iOS, web and Android) in order to identify the same user across platforms. Note that you'll need to:
Set the default reporting identity to "By User-ID then Device" in the Reporting settings for Google Analytics in the Firebase console (see attached screenshot and docs for more info).
Make sure you are following the Privacy Policy when using the User ID.
I would like to now if the following functionality is supported by google calendar api:
Does the functionality provided by "Push notifications" include new events or just existing ones. Here is a copy paste from the documentation that let me doubt that new event notifications are supported "The Google Calendar API provides push notifications that let you watch for changes to resources.". So does this only apply to already existing resources (events on my case).
Is there a way to limit the availability on the google calendar. By this I mean setting a general limit (i.e working hours for a company for example from 9am to 5pm). And putting the logic further, is there a way to add more constraints. For example after I receive a notification of a new event created (if this functionality is provided), I check the event's data in my web-hook and let google calendar know that this event shouldn't be considered as valid.
If these requirements are not provided already by google calendar API, I am open to any suggestions to accomplish this even if it takes more coding.
Just to make it clear. The context of these questions is when the user creates an event in their google calendar through google calendar web interface not through my application.
I've recently set up Firebase Analytics with my website. I was beginning to add some events to be logged and realized any arbitrary event could artificially be called. I could just go into my browser's console and run the command firebase.analytics().logEvent('some_fake_event').
If you know a website is using firebase analytics, what's to stop you from simply spamming fake events into your console? The website owner's analytics would become fairly screwed up. Also, firebase mentions that there's a 500 event-type limit. One could also run firebase.analytics().logEvent('fake_event_1'), firebase.analytics().logEvent('fake_event_2'), etc. Oops, the website owner can't create any more new (legitimate) event types.
What is in place to prevent this?
The logEvent method will be available once you rely on standard firebase SDK. The only way to prevent this would be to obfuscate the library you're using.
I have been searching all over for this, and I just haven't been able to find a clear answer to my questions.
I'm developing an app for a client and using Firebase as my backend (it's my first time). I need each user account to have it's own calendar.
I will be using the Firebase O-Auth but I don't want my app to see or edit a users auth account calendar (ie: if a google user logs in I don't want to edit their google calendar). I want our database to store a unique calendar for each unique user.
Will the calendar API allow me to do this? The app could potentially have thousands of calendars. I've seen some docs about limits, but it seems like limits on api calls, which I don't have any estimates for at this time.
Would a service account be appropriate for this application?
I've checked these other posts, but they don't quite answer my questions:
How to create a scalable calendar service backend for an Android app?
Google Calendar API - Designed for?
Any kind of insight would be much appreciated. Thanks!
Generally what we do in this case is create calendars using documents and collections within Firebase. Here is an example of a calendar app that uses Firebase to store its appointments. It is written in Flutter, but the backend design for Firebase should be easy to understand.
https://www.syncfusion.com/kb/12067/how-to-work-with-the-firebase-database-and-the-flutter-calendar-for-appointments
My scenario is the following: We currently own an online rental marketplace that uses peer to peer bookings just like Airbnb. This means each user has a calendar for their property.We have a Vaway calendar for the bookings on our site however are wanting to integrate google calendar so we can be able to 2 way sync/asynchronous all the Ical calendars to each other from our partner sites who support it.
After much research I have tested my personal google calendar to see how the iCal works and it seems to work perfectly so we decided this architecture would need to be implemented on a much larger scale. This would be used in all new users signups to give our users an all in one calendar that syncs all our Partner sites into one completely synced google calendar for their listing. This basically allows a user who has their listing on 7 different platforms to sync to one calendar showing availability for them to keep track of inside Vaway account.
The google calendar would be completely separate from our Vaway calendar specifically to allow our users to sync all their property bookings from other sites into one integrated calendar.. The problem when reading about google calendar API is it requires OAuth 2.0 which is required user sign in from their existing google account (Calendar, Gmail...etc). Many of our users and new signups will not have google accounts and we do not want them to have to go through a google signup process to log into their calendar. Is there any way around OAuth 2.0? We really just need the functionality of the google calendar and its syncing capabilities inside our dashboard to give read write permission and sync back and forth 2 way with other calendars on other platforms.
With all of the features the google calendar has it seems to be perfect for what we are doing when testing. Each user that signs up with us will have google calendar in their Vaway dashboard provided by vaway however they will manage their own google calendar inside the Vaway platform for their property bookings. All calendars events/bookings would be public to allow the Ical syncing option to push through.
We do not want the users accessing this calendar outside of the platform because the pulls them away from the site. I'm not sure what solution would best suit this business model and am totally at my wits end here after researching. We are trying to keep our overhead low so google apps marketplace is not an option.
You really should reformulate your question, because it's really hard to read and understand right now.
But if I really get your question, you want to enable managing google calendar from a personal application without the end user having to log to any google personal account.
If this is clearly what you want to do, I suggest you to have a look to Service Account with OAuth2.0.
(See here : https://developers.google.com/accounts/docs/OAuth2#serviceaccount)
It will provide a service account for your application, from which you will be able to handle calendars for your app.
And here you will find a sample showing how to do it with Java. (https://code.google.com/p/google-api-java-client/wiki/OAuth2#Service_Accounts)