2016-04-07 17 views
6

Google People APIを使用して連絡先の名前、メールアドレス、電話番号を取得し、そのAPIをテストするのにTry it!ツールを使用しています。Google People APIでメールアドレスと電話番号を取得できないのはなぜですか?

の名前は取得されていますが、メールアドレスと電話番号は取得されていません。私はすべてを正しくやっていると思う。私は適切なスコープと選択されたフィールドで正しく認証されています。 enter image description here enter image description here

私は何か間違っていますか?あるいは、これはGoogle側の問題ですか?

+0

これらの詳細を共有するために接続を有効にする必要がありますか? Google+を使用しているモバイルアプリやサイトでは、通常、追加情報の入力を求めなければなりません。 – user2864740

+0

リクエストURLにaccess_tokenを渡す必要はありませんか? –

答えて

15

solutionが見つかりました。このRequestMaskフィールドを省略したGoogle People APIドキュメントによれば、すべてのフィールドが含まれますが、それは起こっていません。私の場合、RequestMaskフィールドをperson.names,person.emailAddresses,person.phoneNumbersに設定すると動作します。

+0

優秀な発見。 People APIの壁に私の頭を打つのを止めることを可能にしてくれてありがとうございます。< – Schule

+0

これで私を救った!ありがとうございました! –

+0

これは私にForest Whitakerの目を与えていた。ありがとうございました。 – Joel

2

people.connections.listを使用して連絡先のリストを取得し、それらをループして、個々の連絡先をフェッチするためにpeople.getを使用する必要があります。私の場合、私はpageSizeを50に設定し、その後、これらの50の連絡先の詳細を取得するためにpeople:batchGet(一度に50までのリソース名をサポートします)を使用します。

1

資格情報オブジェクトがどこかに保存されると、次のコードを使用して、電話番号やその他の詳細を取得できます。あなたはただ明確にする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

回答ありがとう –

2

を設定する必要があります - それは本当に私にはなかったので - あなたが構築している場合GETは、要求のために自分でクエリパラメータを要求しますマスクはrequestMask.includeFieldです。ネストされたJSONはキーパスに展開されます。だから、完全な接続リストGET要求がものになるだろうように:

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

1

ユーザーの電話番号やその他の詳細は、ユーザーが自分のGoogleプロフィールに追加した場合にのみ取得されます。

あなたがTry this APIツールを使用している場合と「resourceNameは=人/私」、その後で:

  1. Googleアカウントでログインして
  2. GoogleのAPIエクスプローラーをできるようにあなたの同意を与えるべきですツールを使用して、ログインしたユーザーの(この場合はあなたの)プロファイルの詳細にアクセスします。 See example here.

あなたの同意が得られたら、ログインしたユーザーの「電話番号」と「アドレス」を取得できます。

あなたが他のユーザーのプロファイルにアクセスする場合、またはあなたが他のソースからのAPIを呼び出す場合:

  1. ユーザーが自分から要求された情報にアクセスするためのアプリ/ウェブサイト/プログラムに権限を与える必要があります/彼女のプロフィール

  2. あなたは、ターゲットユーザのプロフィールから個人的な詳細を得るために、 "ベアラ(ターゲットユーザのOAuth accesstoken)"とGET REQUEST HEADERSに '認可' KEYを含める必要があります。

のOAuth accesstokenは、ユーザーの同意応答またはaccesstokenためrefreshtokenを交換することによって直接得ることができます。

+0

OPは、連絡先の電子メールアドレスと電話番号に関する情報を特に要求しました。 –

関連する問題