2015-12-14 22 views
5

Sto utilizzando le API di Google per ottenere eventi e contatti del calendario dell'utente.Come ottenere solo email_ids (non G + id) dall'API Eventi

durante il recupero dei contatti, ottengo la risposta nel modo seguente: -

[ 
    { 
     'phones': [], 
     'image_path': '', 
     'id': 'ID', 
     'emails': ['email1'], 
     'name': ABC 
    }, 
    { 
     'phones': [], 
     'image_path': '', 
     'id': 'ID', 
     'emails': ['email2'], 
     'name': DEF 
    } 
] 

durante il recupero degli eventi, ottengo la risposta follwoing: -

[ 
    { 
     'attendees': [{ 
      'organizer': True, 
      'displayName': 'ABC', 
      'id': 'Google+ Id', 
      'responseStatus': 'accepted' 
     }, { 
      'self': True, 
      'displayName': 'DEF', 
      'id': 'Google+ id', 
      'responseStatus': 'accepted' 
     }], 
     'organizer': { 
      'displayName': 'ABC', 
      'id': 'Google+ id' 
     }, 
     'creator': { 
      'displayName': 'ABC', 
      'id': 'Google+ id' 
     }, 
    }, 
    { 
     'organizer': { 
      'self': True, 
      'displayName': 'DEF', 
      'email': 'email2' 
     }, 
     'creator': { 
      'self': True, 
      'displayName': 'DEF', 
      'email': 'email2' 
     }, 
    } 
] 

Come si può vedere che durante il recupero degli eventi, (in partecipanti, organizzatori, creatori) ottengo l'id di Google+ in alcuni casi e email_id in altri casi. Questo non mantiene un'uniformità nel mio codice.

Poiché ho recuperato anche i contatti dell'utente, e cerco i contatti tramite i loro email_ids. Se non ricevo un email_id in partecipanti, organizzatori o creatori, non potrò fare riferimento all'oggetto contatto.

Come posso essere sicuro di ricevere solo email_ids nei partecipanti, non l'ID di Google+.

+0

Sono in grado di ottenere solo gli indirizzi e-mail con il metodo [Events.get] (https://developers.google.com/google-apps/calendar/v3/reference/events/get#try-it) . Dal momento che, non sono sicuro di come appare la richiesta.Se imposti i parametri param con solo displayName ed e-mail. Dovresti essere in grado di ottenere esattamente ciò di cui hai bisogno. Spero possa aiutare. – Andres

+0

Grazie per la risposta. Ogni volta che cerco di aggiungere qualsiasi 'campo' dice,' Creatore selezione campo non valido'. Restituisce lo stesso errore per qualsiasi tipo di campo. – PythonEnthusiast

+0

L'unico utente il cui campo ID è mancante è quello con il campo 'self' etichettato come' Vero' ... ti aiuta? – slushy

risposta

1

Secondo Google Calendar API docs

interrogazione parametri facoltativi

alwaysIncludeEmail 

booleano Se includere sempre un valore nel campo e-mail per il organizzatore, creatore e partecipanti, anche se non vero e proprio e-mail è disponibile (ovvero verrà fornito un valore generato e non funzionante). L'uso di questa opzione è sconsigliato e dovrebbe essere utilizzato solo dai client che non possono gestire l'assenza di un valore di indirizzo e-mail nelle citate posizioni . Opzionale. L'impostazione predefinita è False.

In ogni caso non è consigliabile utilizzarlo, perché a volte non è disponibile una vera e-mail.

Aggirare:

È possibile utilizzare G + API per andare a prendere utente E-mail fornendo il suo/la sua e-mail.

email
questo scopo le richieste che la vostra applicazione avere accesso a:

indirizzo email dell'account Google dell'utente. Si accede all'indirizzo e-mail chiamando lo people.get, che restituisce l'array e-mail (o chiamando people.getOpenIdConnect, che restituisce la proprietà e-mail in formato conforme a OIDC). il nome del dominio Google Apps, se presente, a cui appartiene l'utente. Il nome di dominio viene restituito come la proprietà del dominio da

people.get (or hd property from getOpenIdConnect)

Questo ambito e-mail è equivalente e sostituisce il campo di applicazione https://www.googleapis.com/auth/userinfo.email.