ContactSyncService: Implement related functions
Includes:
- After adding/deleting/modifying contact groups and personnel information, the cloud and device are synchronized with each other.
- After adding/deleting/modifying contact avatar information, the cloud and device are synchronized with each other.
Note: Tried to use PeopleApi, but did not have access to the interface.
@DaVinci9196 so can people api not be made to work with MicroG? This is critical, as since a few weeks ago all requests made to the old apis return: Received 429 status code: Contacts API has been deprecated. Migrate to People API to retain programmatic access to Google Contacts. See https://developers.google.com/people/contacts-api-migration.
This includes the google contacts sync adapter
@DaVinci9196 I would like to help to finish implementing this. Please respond.
@DaVinci9196 I would like to help to finish implementing this. Please respond.
Sorry, I just noticed today that I used OauthToken generated based on GMS and Google Contacts app when verifying whether PeopleApi is available. Unfortunately, errors such as unable to access the API and no contacts permission appeared. You can try to see if there are other ways to solve these errors.
I am looking into this
I am still looking into this, as the entire structure of the api has changed this is not as simple as I thought.
@Sense101 sorry for bothering, but what have you discovered?
No problem, took a break from this although I will be returning to it. Part of what I was working on is that the format of the .proto files (which define data sent between the client and server) must include specific annotations to link up correctly with the new google api's. This required different dependencies to the ones used right now in MicroG, which was a whole mess to sort out.
Still lots of work to do, but that's part of what I discovered :)
Just noting I had some incorrect assumptions about this.
@DaVinci9196 I have been working on this, and have replicated calling the People api using an oauth generated based on GMS. I got the following error messsage back from google:
People API has not been used in project 745476177629 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/people.googleapis.com/overview?project=745476177629 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
Was this the same error that you saw? If not, what error did you see?
I tried generating oauth token based on the old contacts sync adapter id but couldn't get an auth token.
I think this is a crucial feature for microg to have so it should be a priority to fix.
The only next step I see from here is reverse engineering how play services does it, which I have no experience with. It seems likely that google play services is using some internal API - would you be able to either find out what that is / know how I could do that?
If anyone else is willing to help with this it would also be appreciated.
@Sense101 Yes, we have encountered this problem since the beginning. This is a configuration behavior of GMS itself and there is no way to bypass or fix it. The current solution was adopted as the last resort to sync contacts.
@DaVinci9196 so to clarify, you're saying there is no way to now include contacts sync within MicroG? Why is reverse engineering what play services does not an option?
@Sense101 At least not yet, maybe Marvin is considering other options.
@DaVinci9196 @Sense101
Before implementing the contact sync part have you tried to implement the backup transport part?
On Android 4.4 (Kitkat) the Google Contact Sync Adapter behave in this way:
- WithOUT Google Backup Transport it use its internal deprecated sync over plain http
- With Google Backup Transport installed it use Google Backup Transport to do the sync
Before Android 6 (Marshmallow) all Google Backup Transports include the service: com.google.android.backup.BackupTransportService
Starting from Android 6 the service .backup.BackupTransportService was removed from Google Backup Transport and added to Google Play Services.
On Android 7.1.2 (Nougat) Google Contact Sync Adapter say this:
09-12 19:36:24.107 6027 6046 I SyncAdapterProxy: Delagator disabled, using the (deprecated) GData sync adapter
09-12 19:36:24.110 6027 6046 I GoogleHttpClient: GMS http client unavailable, use old client
So if we implement the missing parts in microG Services (possibly service .backup.BackupTransportService) maybe the official Google Contact Sync Adapter may start working again.
@ale5000-git Compared to implementing another larger function, I prefer the current PR solution :)
The whole file is 0.17 MB, I wouldn't say it is big. This is the one I'm referring to: https://www.apkmirror.com/apk/google-inc/google-backup-transport/google-backup-transport-5-1-1-2640980-release/google-backup-transport-5-1-1-2640980-android-apk-download/
Also the current PR don't work, or I'm wrong?
As @ale5000-git said, this PR doesn't work anymore, and there isn't any way to get it working.
However, I don't think relying on Google Contacts sync apk is a good solution because Google clearly stopped producing further versions and there's no way it will work long term.
The idea with backup transport may be a good try though for a short term solution, although I don't like the idea of adding old code
After verification, this PR still works to obtain contact data. However, additional steps are required. After granting microG permission to read your address book, select your Google account on the Accounts page in System Settings and click Sync Now.
After verification, this PR still works to obtain contact data.
This is awesome! Is there an early build for alpha-testing? thanks.
P.S. I see that CI doesn't leave artifacts, sadly
Hmm so it seems the shutdown of the old api for contacts sync didn't yet impact when play services is asking for sync?
That's unusual as it is shut down for all other apps I think it is only a matter of time till they shut it down fully
hello, Hi, I used to use the Magisk module to sync my contacts, but a few months ago, or maybe at the beginning of the year, after updating the ROM and/or apps, my contacts stopped having names (they wouldn't sync). Now I've formatted my phone and tried the same process I used with the module, but it still doesn't work. I've also tried downloading the latest sync adapters, but that didn't work either. I just tried DAVX, and the implementation for syncing has improved; it's incredibly easy (they've added a button).
And now I see this thread. Has it finally been implemented? Because I see "All checks have passed" and "No conflicts with base branch."
Any updates, please? Thanks a million!