Modernize

Essentially reimplement the flow with copy-pasted code from
accounts-box package (which in turn used copy-pasted code from
accounts-onedrive, which in turn used copy-pasted code from
accounts-google - because yay standards!). Works now.