title: Creating a family calendar with google calendar - how to go about access?
body: <p>I'm creating a dashboard-style calendar to go up on a screen in my living room, connected to a Raspberry PI. The calendar will basically be a HTML page generated locally on the Raspberry PI (probably by a Python script or similar, I haven't figured that bit out yet). I want it to show a merge of the calendars in my family, that is of selected users in our family Google Apps domain.</p>
  
  <p>As the Google Apps admin I can see all of them already, so ideally I want to create a single API Key that gives read-only access to all of the calendars. However, the developer dashboard doesn't seem to be set up that way, it looks as if I would have to create an "App" and then using OAuth 2.0 the individual members would have to grant the "App" access to their calendar.</p>
  
  <p>So how should I structure this? Would my Raspberry PI script be a client, connecting to my "App" in the Google cloud, and the "App" somehow has access to the required calendars by having to grant access from each user? Or is it possible to just create an access token that my client can use to directly query all the calendars, and keep all my code running locally instead of in the cloud?</p>
  
  <p><strong>Update:</strong> I found that there is a private calendar feed URL <a href="https://support.google.com/calendar/answer/37648?hl=en" rel="nofollow">documented here</a>, this gives an XML feed of recent changes, or an iCal dump of your entire calendar. The private URL contains a key-like string <code>private-&lt;128-bit-hex-value&gt;</code> - is there any way to use this as a key or calendar id with the <a href="https://developers.google.com/google-apps/calendar/v3/reference/" rel="nofollow">v3 calendar API</a>? I already tried using it as the <code>calendarId</code>:</p>
  
  <pre><code>https://www.googleapis.com/calendar/v3/calendars/private-&lt;128-bit-key&gt;
  </code></pre>
  
  <p>But that gives a 401 Unauthorized response. I don't even know if the private URL key is a calendar ID or what.</p>
  
  <p>Of course, I could download the entire iCal dump for all five calendars upon every refresh and process it locally each time to filter for upcoming events, but I'd much prefer to use the calendar API to ask for events with the <code>timeMin</code> and <code>timeMax</code> query parameters and process the JSON response to keep things snappy.</p>