2015-12-14 14 views
5

Tôi đang sử dụng API Google để nhận các sự kiện và danh sách liên hệ trên lịch của người dùng.Cách nhận chỉ email_ID (không phải G + id) từ API sự kiện

Trong khi lấy các điểm tiếp xúc, tôi nhận được câu trả lời theo cách sau đây: -

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

Trong khi lấy các sự kiện, tôi nhận được câu trả lời 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' 
     }, 
    } 
] 

Như bạn có thể thấy rằng trong khi tìm nạp sự kiện, (ở những người tham dự, người tổ chức, người sáng tạo) tôi nhận được id Google+ trong một số trường hợp và email_id trong các trường hợp khác. Điều này không duy trì tính thống nhất trong mã của tôi.

Vì tôi cũng đã tìm nạp địa chỉ liên hệ của người dùng và tôi tìm kiếm các địa chỉ liên hệ qua email_id của họ. Nếu tôi không nhận được email_id ở những người tham dự, người tổ chức hoặc người tạo, tôi sẽ không thể tham chiếu đối tượng liên hệ.

Làm cách nào để đảm bảo rằng tôi chỉ nhận được email_id ở những người tham dự chứ không phải id Google+.

+0

Tôi chỉ có thể nhận địa chỉ email tốt với phương pháp [Events.get] (https://developers.google.com/google-apps/calendar/v3/reference/events/get#try-it) . Vì, tôi không chắc chắn chính xác yêu cầu đó trông như thế nào.Nếu bạn đặt tham số trường chỉ với tên hiển thị và email. Bạn sẽ nhận được chính xác những gì bạn cần. Hy vọng rằng sẽ giúp. – Andres

+0

Cảm ơn bạn đã phản hồi. Bất cứ khi nào tôi cố gắng thêm bất kỳ 'trường' nào nó nói,' Tác giả chọn trường không hợp lệ'. Nó trả về cùng một lỗi cho bất kỳ loại trường nào. – PythonEnthusiast

+0

Người dùng duy nhất có trường id bị thiếu là trường có trường 'self' được gắn nhãn là' True' ... có trợ giúp không? – slushy

Trả lời

1

Theo Google Calendar API docs

truy vấn tùy chọn thông số

alwaysIncludeEmail 

boolean Cho dù luôn luôn bao gồm một giá trị trong lĩnh vực email cho tổ chức, tác giả và người tham dự, thậm chí nếu không có email thực có sẵn (tức là một giá trị được tạo ra, không hoạt động sẽ được cung cấp). Việc sử dụng tùy chọn này không được khuyến khích và chỉ nên được khách hàng sử dụng mà không thể xử lý việc thiếu giá trị địa chỉ email trong các địa điểm được đề cập. Không bắt buộc. Mặc định này sai.

Dù sao nó không được khuyến khích sử dụng vì đôi khi không có email thực.

làm việc xung quanh:

Bạn có thể sử dụng G + API để lấy người sử dụng Email thông qua cung cấp/email của mình.

email
phạm vi này yêu cầu mà ứng dụng của bạn được truy cập vào:

địa chỉ email tài khoản Google của người dùng. Bạn truy cập địa chỉ email bằng cách gọi people.get, trả về mảng email (hoặc bằng cách gọi people.getOpenIdConnect, trả về thuộc tính email theo định dạng tuân thủ OIDC). tên miền Google Apps, nếu có, mà người dùng thuộc về. Tên miền được trả về là tài sản miền từ

people.get (or hd property from getOpenIdConnect)

phạm vi email này tương đương với thay thế và phạm vi https://www.googleapis.com/auth/userinfo.email.

Các vấn đề liên quan