perl - 从 Yahoo API 获取联系人照片时出现 404 错误

标签 perl http contacts yahoo-api

我使用 ShuttleCloud 导入联系人,但他不支持处理联系人照片。由于 ShuttleCloud 给我联系 ID,我很容易从谷歌收到联系照片,但不能从雅虎收到。 (据我所知,微软不支持返回 contact photo 的机制)。

例如,我使用 url 获取有关联系人的信息:

my $url = 'https://social.yahooapis.com/v1/user/72KIKWBUXCMY6XVHD5B5UN52PU/contact/13?format=json';

然后我使用收到的 url 获取图像:

my $url = 'http://social.yahooapis.com/v1/user/72KIKWBUXCMY6XVHD5B5UN52PU/contact/13/Image/2';

全部根据documentation .但是 Yahoo 返回 404 Not Found on Accelerator。如果我使用 https 而不是 http,Yahoo 返回 404 Not Found

带有 GET 请求的代码:

my $ua  = LWP::UserAgent->new();
my $req = HTTP::Request->new(GET => $url);
$req->header('Authorization' => 'Bearer '.$token);
my $resp = $ua->request($req);

附言所有使用单一字段(姓名、地址等)的请求都有相似的返回码和错误。

我的范围: 联系人 - 读/写; 社交目录(配置文件)- 读/写公共(public)和私有(private)。

最佳答案

看起来Yahoo contacts API 大部分已失效/损坏。 在他们的 book 中有详细记录,但实际上它的某些功能 [不再] 不再起作用。这些损坏的功能包括单字段请求(GETPUT)、字段收集请求,如 /contact/ID/emails(同样,无论 HTTP 方法如何),以及您注意到的图像获取。 仍然可以创建新联系人或删除现有联系人,因为多联系人和单联系人端点都处于事件状态。但是无法编辑现有联系人获取联系人图片

此外,此 API 不设置任何 CORS header ,因此无法直接从浏览器使用此 API。 (如何从 Yahoo 端修复:将 Access-Control-Allow-Origin: * header 添加到 API 端点。如何从客户端解决:使用后端作为代理)

有一个page ,从他们的开发者主页链接,该主页声称是 documentation for a current version of Yahoo Social API ,但此页面也已损坏。它有指向“文档”和“论坛”的链接,两者都带有指向同一页面的空 href。唯一有效的链接是前面提到的标有“Legacy API”的 REST API 书籍。

总结:

  • 可能有一些新版本的 API,但没有在任何地方记录,指定用于记录的页面已损坏。
  • “旧”版本的 API 有很好的文档,但 API 本身功能不全。
  • 网络版的联系人应用(在 Yahoo Mail 中)使用自己的后端,而不是公共(public) API,并且请求受到 cookie 而非 OAuth key 的保护。因此,我们不能轻易使用此 API,尽管它可能是获取所需信息的唯一有效方式。

UPD:Twitter 中询问了他们和 Uservoice ,请投票。希望有人最终会调查这个问题。

关于perl - 从 Yahoo API 获取联系人照片时出现 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31156150/

相关文章:

使用反射 $foo->$bar() 时性能中断

php - 如何为 AWS S3 图像添加 Http header

ios - 仅显示具有正确电话号码的联系人(联系人框架)

android - 如何在 Android 中更新联系人的电子邮件、地址、昵称等?

C++ 调用 perl 代码 - eval_sv 不将参数传递给脚本

正则表达式匹配 "not preceded by, unless followed by"

Perl-对象数组

angularjs - 如何在 Angular $http 中添加多个同名查询参数

api - 如何在多重赋值中修复赋值[]字节的数据

ios - 在iOS8中获取联系人列表,导致应用崩溃