Authorization is not persisting on Safari (works on Firefox, Chrome)
Expected Behavior
I'm using the calendar quickstart and behaviour is different on Safari vs. other browsers (Chrome, Firefox).
After signing in successfully, I can see the calendar entries. After closing the browser I expect not to have to log back in.
Actual Behavior
In Safari (MacOS and iOS), I am forced to authenticate each time the browser session expires (60 mins) or after quitting the browser.
In our web application this is causing us considerable problems because Safari is forcing the user to sign in after the session expires (60 mins).
This is resulting in considerable friction and poor user adoption. If all the user wants to do is check the calendar (via our app) then they don't need the extra steps of signing in again. This is especially tedious on a mobile device.
I researched as best I could and
- After clearing
Safari->Preferences->Privacy->Manage Website Data...-> google & "mywebsite" ->Removethe problem went away for a short period. - On the iPhone you can't clear cookies for a subset of sites so this is unacceptable but likewise the problem reappeared on our test devices.
Also, it appears that the login authentication (perhaps) is being saved in persistent storage as when I look in Local Storage on Firefox, I see this created under https://accounts.google.com after authorisation.
oauth2_ss::http://beta.mywebsite.com::1::DEFAULT::_ss_:"{"cachedValue":{"hint":"long-gobbledigookstring","disabled":false}}"
It is created also on Safari but on Safari it doesn't persist after quitting where as on Firefox it does (as it also does on Chrome)
JavaScript Console Output
There are no errors but I added simple console.log messages in each method in to track the flow
Firefox (working as expected) after first authorising and then quitting the browser
handleClientLoad testauth.html:44:17
initClient testauth.html:52:17
initClient.then testauth.html:59:19
updateSigninStatus true testauth.html:78:17
listUpcomingEvents testauth.html:122:17
Chrome (working as expected)
testauth.html:44 handleClientLoad
testauth.html:52 initClient
testauth.html:59 initClient.then
testauth.html:78 updateSigninStatus true
testauth.html:122 listUpcomingEvents
Safari (not working)
handleClientLoad (testauth.html, line 44)
initClient (testauth.html, line 52)
initClient.then (testauth.html, line 59)
updateSigninStatus false (testauth.html, line 78)
Specifications
- Browser (Chrome/Internet Explorer/Firefox): Chrome 78.0.3904.97 (Official Build) (64-bit) Firefox 70.0.1 (64-bit) Safari Version 13.0.3 (13608.3.10.10.1)
- OS (Mac/Linux/Windows): Mac OS 10.13.6