Skip to content

Conversation

DaVinci9196
Copy link
Contributor

Includes:

  1. After adding/deleting/modifying contact groups and personnel information, the cloud and device are synchronized with each other.
  2. 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.

@Sense101
Copy link

@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

@Sense101
Copy link

@DaVinci9196 I would like to help to finish implementing this. Please respond.

@DaVinci9196
Copy link
Contributor Author

@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.

@Sense101
Copy link

Sense101 commented Mar 6, 2025

I am looking into this

@Sense101
Copy link

I am still looking into this, as the entire structure of the api has changed this is not as simple as I thought.

@000exploit
Copy link

@Sense101 sorry for bothering, but what have you discovered?

@Sense101
Copy link

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 :)

@Sense101
Copy link

Just noting I had some incorrect assumptions about this.

@Sense101
Copy link

@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.

@DaVinci9196
Copy link
Contributor Author

@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.

@Sense101
Copy link

@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?

@DaVinci9196
Copy link
Contributor Author

DaVinci9196 commented Sep 12, 2025

@Sense101 At least not yet, maybe Marvin is considering other options.

@ale5000-git
Copy link
Member

ale5000-git commented Sep 12, 2025

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants