phildini / logtacts

Better contact management.
https://www.contactotter.com
MIT License
61 stars 19 forks source link

Connect with Google Contacts #36

Open phildini opened 8 years ago

phildini commented 8 years ago

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

phildini commented 8 years ago

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

phildini commented 8 years ago

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

phildini commented 8 years ago

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

phildini commented 8 years ago

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

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

paulproteus commented 8 years ago

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

phildini commented 8 years ago

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

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

paulproteus commented 8 years ago

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

"how hard could it be"?

phildini commented 8 years ago

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.

paulproteus commented 8 years ago

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

phildini commented 8 years ago

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 commented 8 years ago

@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 commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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

phildini commented 8 years ago

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