logtacts icon indicating copy to clipboard operation
logtacts copied to clipboard

Connect with Google Contacts

Open phildini opened this issue 9 years ago • 15 comments

https://developers.google.com/google-apps/contacts/v3/?hl=en

phildini avatar Jan 28 '16 04:01 phildini

http://django-allauth.readthedocs.org/en/latest/providers.html#google

phildini avatar Jan 28 '16 17:01 phildini

https://developers.google.com/identity/protocols/googlescopes

phildini avatar Jan 28 '16 17:01 phildini

https://developers.google.com/google-apps/carddav/?hl=en_US

phildini avatar Jan 29 '16 00:01 phildini

So, digging into this, here are my findings so far:

  • the gdata library that I could use to access the contacts API doesn't support python 3
  • pyCardDav, the only python client library I could find for the CardDav API, also doesn't support python 3
  • django allauth doesn't have the correct scoping to get a good api key for accessing the contacts api over OAuth.

In other words, I'm going to have to science the crap out of this.

phildini avatar Jan 30 '16 00:01 phildini

science in the github-esque dat-science meaning?​

paulproteus avatar Jan 30 '16 00:01 paulproteus

Lol, I'm actually referencing a line from the movie "The Martian".

What I think I'll really need to do is:

  • Write my own oauth integration
  • Write my own contacts api client library and/or carddav api client library

phildini avatar Jan 30 '16 00:01 phildini

Or have a weekend sprint with me where we python-3-ify those libraries!

"how hard could it be"?

paulproteus avatar Jan 30 '16 00:01 paulproteus

Here's one of them: https://github.com/google/gdata-python-client

Here's the other one: https://github.com/geier/pycarddav

I don't know if it's worth it to try to update them over re-writing them. pycarddav in particular is based on the vobject library, which is massive, hasn't been updated since like '09, and also doesn't support python3.

phildini avatar Jan 30 '16 00:01 phildini

gdata-python-client has some activity where people want Python 3 at least, so we'd be serving the community: https://github.com/google/gdata-python-client/issues/29

paulproteus avatar Jan 30 '16 00:01 paulproteus

I'm also not sure that syncing over that API is the best approach. It would require doing "since time changed" queries, then comparing against what's in ContactOtter... which I guess is basically what CardDav is already doing? :stuck_out_tongue_closed_eyes:

phildini avatar Jan 30 '16 00:01 phildini

@paulproteus if you're interested in doing a hacking session this weekend to help me nail this out (and maybe work a bit more on #8) I'd be more interested. If I'm doing this on my own, I'll probably write a client that does just what I need.

phildini avatar Jan 30 '16 00:01 phildini

The saga continues.

Dug more into the contacts API, found that it linked to https://developers.google.com/api-client-library/python/ for doing oauth, which isn't too bad, except that that library will only do the oauth portion, because the Contacts API doesn't support the service discovery API used by the python-api-client. Sigh.

Also came across this post: https://groups.google.com/forum/#!topic/oauth2-dev/unOUxP36Ag8, which indicates that the gdata library only supports oauth 1, but the contacts api only supports oauth2. Sigh.

phildini avatar Jan 30 '16 21:01 phildini

Ok, more results: I got oauth working, and was able to pull a data set using requests. Hooray!

Time to learn some XML parsing, I guess.

phildini avatar Jan 31 '16 02:01 phildini

https://github.com/tBaxter/python-card-me - python3 library with vcard support!

phildini avatar Jan 31 '16 20:01 phildini

lolololololololol: http://blog.fruux.com/2014/10/16/google-carddav/

phildini avatar Feb 01 '16 18:02 phildini