如何获取数据形式Google_Service_PeopleService?
How to get data form Google_Service_PeopleService?
我目前正在使用 Google_Client api 并希望获取用户名、Phone、电子邮件和用户地址。
我设置了这些范围:
'https://www.googleapis.com/auth/plus.login',
'https://www.googleapis.com/auth/user.birthday.read',
'https://www.googleapis.com/auth/user.addresses.read',
'https://www.googleapis.com/auth/user.emails.read',
'https://www.googleapis.com/auth/user.phonenumbers.read'
当我使用 google 单击登录时,它会询问正确的权限,然后我使用 Google 提供的代码获取访问令牌。
获得令牌后,我请求 people_service
和配置文件数据,如下所示:
$token = $this->client->fetchAccessTokenWithAuthCode($_GET['code']);
$people_service = new \Google_Service_PeopleService($this->client);
$profile = $people_service->people->get(
'people/me',
array('personFields' => 'addresses,birthdays,emailAddresses,phoneNumbers')
);
它returns一个Google_Service_PeopleService_Person
对象。
但是当我尝试在其上使用 getPhoneNumbers()
之类的方法时,它 returns 出现 Call to undefined method Google_Service_PeopleService_Person::getNames()
错误。
问题是什么,我该怎么办?
你没有说明你是如何设置范围的,错误可能与此有关。
这样做,我得到了正确的结果:
$scopes = [
Google_Service_PeopleService::USER_ADDRESSES_READ,
Google_Service_PeopleService::USER_BIRTHDAY_READ,
Google_Service_PeopleService::PLUS_LOGIN,
Google_Service_PeopleService::USER_EMAILS_READ,
Google_Service_PeopleService::USER_PHONENUMBERS_READ,
];
$client = new Google_Client();
$client->setApplicationName('People API PHP Quickstart');
$client->setAuthConfig('credentials.json');
$client->setAccessType('offline');
$client->setPrompt('select_account consent');
// set the scope
$client->setScopes($scopes);
/* ... actual authentication. */
$service = new Google_Service_PeopleService( $client );
$optParams = [
'personFields' => 'names,emailAddresses,addresses,phoneNumbers',
];
$me = $service->people->get( 'people/me', $optParams );
print_r( $me->getNames() );
print_r( $me->getEmailAddresses() );
print_r( $me->getBirthdays() );
print_r( $me->getPhoneNumbers() );
我目前正在使用 Google_Client api 并希望获取用户名、Phone、电子邮件和用户地址。
我设置了这些范围:
'https://www.googleapis.com/auth/plus.login',
'https://www.googleapis.com/auth/user.birthday.read',
'https://www.googleapis.com/auth/user.addresses.read',
'https://www.googleapis.com/auth/user.emails.read',
'https://www.googleapis.com/auth/user.phonenumbers.read'
当我使用 google 单击登录时,它会询问正确的权限,然后我使用 Google 提供的代码获取访问令牌。
获得令牌后,我请求 people_service
和配置文件数据,如下所示:
$token = $this->client->fetchAccessTokenWithAuthCode($_GET['code']);
$people_service = new \Google_Service_PeopleService($this->client);
$profile = $people_service->people->get(
'people/me',
array('personFields' => 'addresses,birthdays,emailAddresses,phoneNumbers')
);
它returns一个Google_Service_PeopleService_Person
对象。
但是当我尝试在其上使用 getPhoneNumbers()
之类的方法时,它 returns 出现 Call to undefined method Google_Service_PeopleService_Person::getNames()
错误。
问题是什么,我该怎么办?
你没有说明你是如何设置范围的,错误可能与此有关。
这样做,我得到了正确的结果:
$scopes = [
Google_Service_PeopleService::USER_ADDRESSES_READ,
Google_Service_PeopleService::USER_BIRTHDAY_READ,
Google_Service_PeopleService::PLUS_LOGIN,
Google_Service_PeopleService::USER_EMAILS_READ,
Google_Service_PeopleService::USER_PHONENUMBERS_READ,
];
$client = new Google_Client();
$client->setApplicationName('People API PHP Quickstart');
$client->setAuthConfig('credentials.json');
$client->setAccessType('offline');
$client->setPrompt('select_account consent');
// set the scope
$client->setScopes($scopes);
/* ... actual authentication. */
$service = new Google_Service_PeopleService( $client );
$optParams = [
'personFields' => 'names,emailAddresses,addresses,phoneNumbers',
];
$me = $service->people->get( 'people/me', $optParams );
print_r( $me->getNames() );
print_r( $me->getEmailAddresses() );
print_r( $me->getBirthdays() );
print_r( $me->getPhoneNumbers() );