我目前正在使用Google_Client api并想要获取用户名,电话,电子邮件和用户地址.
我设置了这些范围:
'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和profile数据,如下所示:
$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') );
它返回一个Google_Service_PeopleService_Person对象.
但是当我尝试使用getPhoneNumbers()之类的方法时,它会返回对未定义方法的调用Google_Service_PeopleService_Person :: getNames()错误.
有什么问题,我该怎么办?
您没有显示您如何设置范围,错误可能与此有关.
原文链接:https://www.f2er.com/php/134337.html这样做,我得到了正确的结果:
$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,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() );