You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Apps Script中调用Everypixel API处理无后缀图片URL问题

解决Everypixel人脸检测API无法处理无后缀图片URL的问题

核心问题分析

  1. 认证方式错误:原curl命令使用--user实现Basic认证,但你的Google Apps Script代码错误地将认证信息放在user请求头中,正确做法是使用Authorization头携带Base64编码的客户端凭证。
  2. 图片类型识别失败:Everypixel API可能依赖URL后缀判断图片格式,无后缀URL会导致API无法识别图片类型,进而无法正常处理请求。

解决方案一:修正认证并指定图片类型

通过在请求Payload中添加image_type参数明确图片格式,同时修正Basic认证的请求头:

var apiUrl = "https://api.everypixel.com/v1/faces";
var clientId = "<your-client-id>";
var clientSecret = "<your-client-secret>";
var targetImageUrl = "https://media-exp1.licdn.com/dms/image/C4D03AQEnKuhl53UqCA/profile-displayphoto-shrink_800_800/0/1563935310527?e=2147483647&v=beta&t=8x-OjnqJCg6U7jt9Zm2rRscO22pG5C5QvgSh7H9lfSI";

const response = UrlFetchApp.fetch(apiUrl, {
  method: "POST",
  headers: {
    "Cache-Control": "no-cache",
    "Content-Type": "application/json",
    // 修正Basic认证:Base64编码客户端ID和密钥
    "Authorization": "Basic " + Utilities.base64Encode(`${clientId}:${clientSecret}`)
  },
  muteHttpExceptions: true,
  followRedirects: true,
  validateHttpsCertificates: true,
  contentType: "application/json",
  payload: JSON.stringify({
    url: targetImageUrl,
    // 根据实际图片格式指定类型(jpg/png等)
    image_type: "jpg"
  })
});

var data = JSON.parse(response.getContentText());
Logger.log(data);

解决方案二:下载图片后以文件形式上传

如果指定image_type无效,可先将图片下载为Blob,再通过multipart/form-data形式上传,让API直接从文件内容识别图片类型:

var clientId = "<your-client-id>";
var clientSecret = "<your-client-secret>";
var apiUrl = "https://api.everypixel.com/v1/faces";
var targetImageUrl = "https://media-exp1.licdn.com/dms/image/C4D03AQEnKuhl53UqCA/profile-displayphoto-shrink_800_800/0/1563935310527?e=2147483647&v=beta&t=8x-OjnqJCg6U7jt9Zm2rRscO22pG5C5QvgSh7H9lfSI";

// 下载目标图片为Blob格式
var imageBlob = UrlFetchApp.fetch(targetImageUrl).getBlob();

// 构造multipart请求上传文件
var options = {
  method: "POST",
  headers: {
    "Authorization": "Basic " + Utilities.base64Encode(`${clientId}:${clientSecret}`)
  },
  muteHttpExceptions: true,
  payload: {
    file: imageBlob
  }
};

var response = UrlFetchApp.fetch(apiUrl, options);
var data = JSON.parse(response.getContentText());
Logger.log(data);

验证步骤

  1. 将代码中的<your-client-id>和<your-client-secret>替换为实际的Everypixel凭证。
  2. 方案一中需根据图片实际格式调整image_type参数。
  3. 运行脚本后查看日志,确认API返回正常的人脸检测结果。

内容的提问来源于stack exchange,提问作者Steph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:30:54