Google Contacts API - 获取图像
Posted
技术标签:
【中文标题】Google Contacts API - 获取图像【英文标题】:Google Contacts API - getting image 【发布时间】:2013-10-24 13:06:33 【问题描述】:我在检索用户联系人的图片时遇到了一个简单的问题。所以我向
提出请求$url = 'https://www.google.com/m8/feeds/contacts/default/full?alt=json&max-results=9999&oauth_token=' . $accessToken;
然后我得到了巨大的 JSON,我从中提取了全名和电子邮件。然后我尝试获取联系人的图像,但没有任何成功。
我与所有联系人联系在一起,每个人都有以下结构:
entry [id, updated, category, title, link, gd$email].
在链接部分,我有四个链接,其中前两个是指向图像内容的某种链接,但我无法检索它。
任何机构都成功地完成了这种工作!?
Tnx 很多!
顺便说一句:如果我的案例中的某些数据丢失,请报告,我也会添加它!
编辑:我也尝试使用 URL 访问图像
http://profiles.google.com/s2/photos/profile/" + userid + "?sz=" + size;
但问题是我无法从联系人 JSON 中获取 userId。
【问题讨论】:
developers.google.com/google-apps/contacts/v3/… 为什么这不起作用? “id”不是你需要的contactID吗? 问题是我没有联系人 ID,我的 JSON 中有一个字段 ID,其中包含“google.com/m8/feeds/contacts/adrian.1358%40gmail.com/base/…” 也在 JSON 的链接部分,我有一个类似“google.com/m8/feeds/photos/media/adrian.1358%40gmail.com/…”的链接 顺便说一句,我尝试访问这些链接..每次我遇到错误..我也尝试将 access_token 放在最后,也没有运气.. :/ 您确实知道您需要在 API 控制台中注册,您需要获得某种身份验证(例如通过 OAuth 2 获得的 AccessToken)等等?特别是如果您想访问非公开用户数据。根据developers.google.com/google-apps/contacts/v3/… 【参考方案1】:您必须调用照片端点并将有效的访问令牌作为查询参数附加到它。
例子:
https://www.google.com/m8/feeds/photos/media/name.surname%40gmail.com/0?access_token=ACCESS_TOKEN
文档:
https://developers.google.com/google-apps/contacts/v3/#contact_photo_management
【讨论】:
【参考方案2】:如果上述标签可用,请再次提出请求,如下所示。
$add = new Google_HttpRequest("https://www.google.com/m8/feeds/contacts/default/full?alt=json&v=3.0&max-results=500&access_token='.$token->access_token");
$add->setRequestMethod("GET");
$add->setRequestHeaders(array('GData-Version' => '3.0', 'content-type' => 'application/atom+xml; charset=UTF-8; type=feed'));
$submit = $client->getIo()->authenticatedRequest($add);
$sub_response = $submit->getResponseBody();
$temp = json_decode($sub_response, true);
foreach ($temp['feed']['entry'] as $image)
$google_contact_id = $image['link'][2]['href'];
if (isset($image['link'][0]['href']))
$photo = new Google_HttpRequest($image['link'][0]['href']);
$photo_val = $client->getIo()->authenticatedRequest($photo);
$photo_return = $photo_val->getResponseBody();
$imgData = base64_encode($photo_return);
$pro_image = 'data:image/jpeg;base64, ' . $imgData . '';
【讨论】:
以上是关于Google Contacts API - 获取图像的主要内容,如果未能解决你的问题,请参考以下文章
Google Contacts API v3:如何使用全文查询?
html Google Contacts API v3 Javascript示例
Google Contacts API - 无法刷新访问令牌
带有 Google JavaScript 客户端库的 Google Contacts API