I've had a java application running for a few years that synced some contacts from some database into the gmail account of a customer.
This stopped working a few days ago, presumably because Google stopped supporting the simple username/password authentication.
First question: Am I correct in assuming that the only supported authentication now is OAuth2?
Assuming that is the case, I don't understand what kind of authorization scheme/flow I should use. I can't show a dialog - this is a service type kind of application, and it should only access one specific customer account that I control. I think I should use a Service Account, but the documentation says this:
Typically, an application uses a service account when the application uses Google APIs to work with its own data rather than a user's data.
But I want to use user data - the Contacts, specifically.
For that scenario the documentation has this to say:
If you have a Google Apps domain—if you use Google Apps for Work, for example—an administrator of the Google Apps domain can authorize an application to access user data on behalf of users in the Google Apps domain. For example, an application that uses the Google Calendar API to add events to the calendars of all users in a Google Apps domain would use a service account to access the Google Calendar API on behalf of users. Authorizing a service account to access data on behalf of users in a domain is sometimes referred to as "delegating domain-wide authority" to a service account.
But, I don't have a Google Apps domain.
So... now what?