2015-12-14 19 views
5

Google APIを使用して、ユーザーの予定表イベントと連絡先を取得しています。イベントAPIからemail_ids(G + id以外)を取得する方法

連絡先をフェッチしている間に、私は次のように応答を得る: -

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

イベントをフェッチしている間、私は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' 
     }, 
    } 
] 

を(出席者、主催者、クリエイターで)イベントを取得している間に、場合によってはGoogle+ IDを取得し、その他の場合はemail_idsを取得します。これは私のコードの統一性を維持しません。

私はユーザーの連絡先も取得しています。その連絡先はemail_idsで検索しています。出席者、主催者、またはクリエイターでemail_idが取得されない場合、私は連絡先オブジェクトを参照することはできません。

Google+ IDではなく、出席者のemail_idsのみを取得するにはどうすればよいですか。

+0

私は[Events.get](https://developers.google.com/google-apps/calendar/v3/reference/events/get#try-it)メソッドを使って電子メールアドレスを取得できます。以来、私は要求がどのように見えるか正確にはわかりません。displayNameとemailだけでフィールドparamを設定した場合。あなたはあなたが必要とするものを正確に得ることができるはずです。希望が役立ちます。 – Andres

+0

お返事ありがとうございます。 'fields 'を追加しようとするたびに'無効なフィールド選択の作成者'と表示されます。どのタイプのフィールドでも同じエラーが返されます。 – PythonEnthusiast

+0

idフィールドがない唯一のユーザは 'self'フィールドが' True'とラベル付けされたユーザです。これは役に立ちますか? – slushy

答えて

1

GoogleカレンダーによるとAPI docs

オプションのクエリが

alwaysIncludeEmail 

なくても、実際の電子メールならば、常に 主催者、作成者と参加者のための電子メールフィールドの値を含めるかどうかをブールパラメータ利用可能です (すなわち、生成された非稼働の値が提供されます)。 このオプションを使用することはお勧めしません。 は、前述の の場所にメールアドレスの値が存在しないことを処理できないクライアントのみが使用してください。オプション。デフォルトはFalseです。

実際のメールが利用できないことがあるため、とにかく使用することはお勧めしません。周り

仕事:

あなたは彼/彼女のメールを提供して、ユーザーの電子メールを取得するためにG + APIを使用することができます。

メール
のアプリがアクセス与えられるこの範囲の要求:

ユーザーのGoogleアカウントのメールアドレスを。メールアドレスにアクセスするには、people.getを呼び出します。これはemails配列を返します(またはpeople.getOpenIdConnectを呼び出して、OIDC準拠の形式で電子メールプロパティを返します)。 ユーザーが所属するGoogle Appsドメインの名前(存在する場合)。ドメイン名は

people.get (or hd property from getOpenIdConnect)

このメールスコープは同等ですからドメインプロパティとして返され、https://www.googleapis.com/auth/userinfo.email範囲を置き換えています。

関連する問題