Как я могу получить доступ к своим контактам Google через PHP, используя служебную учетную запись?

На моем телефонном сервере установлено приложение, которое использовалось для доступа к моим контактам Google с помощью клиентского входа, чтобы мой SIP-телефон мог их искать. Теперь, когда логин клиента был уничтожен, я еще не нашел способ получить доступ к своим контактам Google с помощью PHP, не требуя от пользователя (меня и моей жены) аутентификации.

// create the instance of the Google Client
$this->googleclient = new Google_Client();
$this->googleclient->setApplicationName(GOOGLE_CLIENTID);

// define the credentials and access level (analytics readonly)
$credentials = new Google_Auth_AssertionCredentials(
GOOGLE_EMAIL,
array(
'https://www.googleapis.com/auth/contacts.readonly',
),
file_get_contents("config/key.p12"),
"notasecret");

// set the user it wants to impersonate
$credentials->sub = GOOGLE_USER;

// throw the credentials into the client object
$this->googleclient->setAssertionCredentials($credentials);

// authenticate the application and fetch the token
$this->googleclient->setClientId(GOOGLE_CLIENTID);
$this->googleclient->getAuth()->refreshTokenWithAssertion();

$tokenData = json_decode($this->googleclient->getAccessToken());
$accessToken = $tokenData->access_token;

$val = file_get_contents("https://www.google.com/m8/feeds/contacts/".GOOGLE_USER."/full"."?v=3.0&access_token=".$accessToken);

print_r($val);

Это работает, когда я удаляю константу GOOGLE_USER и просто позволяю сервисной учетной записи получать доступ к своим собственным данным, но это не мои контактные данные и не данные моей жены. Я знаю, что в Службах Google существует делегирование контактов, а также администраторы Служб могут делегировать содержимое, чтобы разрешить доступ к нему учетной записи службы.

Но как мне это сделать, если вы не являетесь пользователем приложения? Похоже, Google забыл об этом, когда они убили Client Login 🙁

0

Решение

Учетная запись службы не принадлежит вам и по умолчанию не имеет доступа к каким-либо данным. Думайте об учетной записи службы как о фиктивном пользователе. Если вы возьмете адрес электронной почты учетной записи службы и добавите его в качестве пользователя в папку на своем диске Google, он получит доступ к этой папке на диске Google. Если вы возьмете адрес электронной почты учетной записи службы и предоставите ему доступ к одному из ваших календарей в Календаре Google, он получит доступ к календарю.

Насколько я знаю, я не могу предоставить другому пользователю доступ к вашим контактам Google.

Я предлагаю вам попробовать использовать Oauth2.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]