2016-04-07 14 views
6

Chcę pobrać moje nazwy kontaktów, adres e-mail i numery telefonów za pomocą Google People API i używam ich narzędzia Try it! do testowania interfejsu API.Dlaczego nie mogę pobrać adresów e-mail i numerów telefonów za pomocą interfejsu API Google People?

Trwa pobieranie nazw , ale nie adresów e-mail i numerów telefonów. Myślę, że robię wszystko poprawnie. Jestem poprawnie uwierzytelniony za pomocą odpowiednich zakresów i wybranych pól. enter image description here enter image description here

Czy robię coś nie tak? A może to jest problem ze strony Google?

+0

Czy połączenia muszą "umożliwić" udostępnianie tych danych? Aplikacje mobilne lub witryny używające Google+ zwykle wymagają podania dodatkowych informacji. – user2864740

+0

Nie musisz podawać access_token w adresie URL żądania? –

Odpowiedz

15

Znalazłem solution. Według dokumentacji Google People API pominięcie tego pola RequestMask będzie zawierało wszystkie pola, ale tak się nie dzieje. W moim przypadku ustawienie pola RequestMask na person.names,person.emailAddresses,person.phoneNumbers działa.

+0

Doskonałe znalezisko. Dziękuję, że mogłem przestać walić głową w ścianę interfejsu API People <3 – Schule

+0

Uratowałeś mnie tym! Dziękuję Ci! –

+0

To dawało mi oko Leśnego Whitakera. Dziękuję Ci. – Joel

2

Musisz użyć pliku people.connections.list, aby pobrać listę kontaktów, a następnie zapętlić je i użyć funkcji people.get w celu pobrania każdego pojedynczego kontaktu. W moim przypadku ustawiłem rozmiar strony na 50, a następnie używam people:batchGet (który obsługuje do 50 nazw zasobów jednocześnie), aby pobrać szczegóły dla tych 50 kontaktów.

1

Po zapisaniu obiektu referencji. Możesz pobrać numery telefonów i inne szczegóły, korzystając z poniższego kodu. Po prostu trzeba ustawić RequestMask

#get the credentials 
 

 
cred_obj = OAuth2Credentials.new_from_json(credentials) 
 
http = httplib2.Http() 
 

 
#create service 
 

 
people_service = build(serviceName='people', version='v1', http=cred_obj.authorize(http)) 
 

 
results = people_service.people().connections().list(resourceName='people/me', 
 
       requestMask_includeField='person.names,person.emailAddresses,person.phoneNumbers', 
 
                pageSize=160) 
 

 
res = results.execute() 
 
connections = res.get('connections', []) 
 

 
for person in connections: 
 
    names = person.get('names', []) 
 
    phone_numbers = person.get('phoneNumbers', []) 
 
    if len(names) > 0: 
 
     name = names[0].get('displayName') 
 
    if len(phone_numbers)>0: 
 
     phone_no = phone_numbers[0].get('value') 
 
     print name, phone_no

+0

dzięki za odpowiedź –

2

Żeby było jasne - bo naprawdę nie było mnie - jeśli są konstruowania GET zażądać sobie parametr zapytania dla żądania maska ​​to requestMask.includeField. Zagnieżdżony JSON jest spłaszczony do keypath. Tak pełna lista połączenie GET żądanie byłoby coś jak: numery telefonów

https://content-people.googleapis.com/v1/people/me/connections?requestMask.includeField=person.names,person.addresses,person.email_addresses,person.organizations,person.phone_numbers

1

użytkownika i inne szczegóły zostaną pobrane tylko wtedy, gdy użytkownik wprowadził je do swojego profilu Google.

Jeśli używasz Try this API narzędzie i „resourceName = ludzie/me”, a następnie:

  1. należy zalogować się na swoje konto Google i
  2. wyrazić zgodę, aby umożliwić API Explorer google narzędzie do uzyskiwania dostępu do zalogowanych danych użytkownika (w tym przypadku Twojego) profilu. See example here.

Po uzyskaniu zgody, użytkownik będzie mógł pobrać "numery telefonów" i "adresy" zalogowanego użytkownika.

Jeśli chcesz uzyskać dostęp do profilu innego użytkownika lub dzwonisz API z innego źródła, wówczas:

  1. użytkownik musi wyrazić zgodę na swojej aplikacji/strony internetowej/programu dostępu do żądanych informacji od swoich/jej profil

  2. musisz zawrzeć KEY "autoryzacja" w GET HEAD REQUEST z VALUE "Bearer (OAuth accesstoken dla docelowego użytkownika)", aby uzyskać dane osobowe z profilu docelowego użytkownika.

Dostęp do OAuth można uzyskać bezpośrednio z odpowiedzi użytkownika lub wymieniając refreshtoken na accesstoken.

+0

PO wyraźnie zażądał informacji o swoich kontaktach, adresach e-mail i numerze telefonu.) Rozwiązanie jest przeznaczone dla zalogowanych danych profilu użytkownika –

Powiązane problemy