php Google通讯录同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php Google通讯录同步相关的知识,希望对你有一定的参考价值。

<?php

/** @var string Google API Host */
protected $api_host = 'https://people.googleapis.com';

/**
 * Create Person Object from Contact Data
 * 
 * @param array $contact Contact Data
 * @return array $person Google Person Object
 */
public function build_person( $contact ) {
	$person = array(
		'names' => array(
			array(
				'givenName' => $contact['names']['first_name'],
				// 'displayName'	=> $contact['names']['display_name'],
				// 'familyName'	=> $contact['names']['last_name'],
			),
		),
		'phoneNumbers' => array(
			array(
				'value' => $contact['phone'],
				'type' 	=> 'mobile',
			),
		),
		'addresses' => array(
			array(
				'type'				    => $contact['address']['type'],
				'country' 			  => $contact['address']['country'],
				'countryCode' 		=> $contact['address']['country_code'],
				'region' 			    => $contact['address']['region'],
				'city' 				    => $contact['address']['city'],
				'extendedAddress' => $contact['address']['districts'],
				'streetAddress'		=> $contact['address']['street'],
			),
		),
	);
	return $person;
}

/**
* Save Contact Data to Google Contacts
*
* @param array $contact Contact Data
*/
public function save_contact( $contact ) {
	$oauth_token = $this->get_access_token();

	// Google Person Object
	$person = $this->build_person( $contact );

	// Do request
	// $response = wp_remote_post( $this->get_google_api_url( '/v1/people:createContact' ), array(
	// 	'timeout' => 15,
	// 	'headers' => array(
	// 		'Authorization' => 'Bearer ' . $oauth_token,
	// 		'content-type' => 'application/json',
	// 	),
	// 	'body' => json_encode( $person ),
	// ) );

	$response = wp_remote_post( $this->get_request_api_url( '/v1/people:createContact' ), array(
		'timeout' => 20,
		'body' => array(
			'token' => $oauth_token,
			'person' => $person,
		),
	) );

	if ( is_wp_error( $response ) ) {
		$error_message = $response->get_error_message();
		write_log( $error_message );
	} else {
		write_log( $response['body'] );
	}
}

以上是关于php Google通讯录同步的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有一年的情况下检索从 Google 通讯录同步的联系人事件?

谷歌通讯录同步服务安装失败 原因和解决方法

网络中同步是啥意思

唯一联系人 ID

如何获取显示#ERROR的单元格的后端值!使用 Google Apps 脚本?

将数据库与 Android 设备和 Google Drive 同步