通过PHP CURL添加Google联系人
我已经能够通过Zend Framework和PHP向Google添加联系人。我也希望能够通过CURL做到这一点。有人有关于如何执行此操作的好教程吗?
I've successfully been able to add a contact to google through Zend Framework and PHP. I want to be able to do this through CURL as well. Does anyone have a good tutorial on how to do this?
我终于可以通过CURL和访问令牌来完成此操作。首先,我想说 OAuth游乐场非常有用。为此,需要两个主要组件:首先,您需要正确设置XML格式。其次,您需要将访问令牌放入CURL实例的标头中。下面是我使用的代码,它可以正常工作:
I was finally able to do this via CURL and an access token. First, I would say that the OAuth Playground is very useful. There are 2 main components needed to do this: first, you need your XML formatted correctly. Secondly, you need your access token put into the header of the CURL instance. Below is the code I used, and it works just fine:
session_start();
$temp = json_decode($_SESSION['token'], true);
$access = $temp['access_token'];
$contactXML = '<?xml version="1.0" encoding="utf-8"?>
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005">
<atom:category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
<gd:name>
<gd:givenName>Jackie</gd:givenName>
<gd:fullName>Jackie Frost</gd:fullName>
<gd:familyName>Frost</gd:familyName>
</gd:name>
<gd:email rel="http://schemas.google.com/g/2005#home" address="jackfrost@gmail.com"/>
<gd:phoneNumber rel="http://schemas.google.com/g/2005#home" primary="true">1111111111</gd:phoneNumber>
</atom:entry>';
$headers = array(
'Host: www.google.com',
'Gdata-version: 3.0',
'Content-length: '.strlen($contactXML),
'Content-type: application/atom+xml',
'Authorization: OAuth '.$access
);
$contactQuery = 'https://www.google.com/m8/feeds/contacts/default/full/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $contactQuery );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $contactXML);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_exec($ch);
我希望这对寻找此答案的其他人有所帮助。在操场上玩耍将帮助您找到正确的URL以及标题中所需的正确参数。
I hope this helps anyone else who is looking for this answer. Playing around with the playground will help you find the right URLs to use and the right parameters required in the header.