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

如何通过PHP向Pinterest传递自定义数据(图片、名称、价格)?

使用PHP向Pinterest传递自定义数据(图片、名称、价格)

核心需求拆解

你已经持有Pinterest开发者凭证(APP_ID、APP_SECRET),并且基于DirkGroenen的Pinterest PHP SDK搭建了基础流程,现在要实现的是上传自定义图片、设置Pin的名称,同时添加价格类自定义元数据。先帮你修正现有代码的问题,再给出完整的实现方案。


先修正现有代码的致命问题

你的boot.php里有两处错误,会直接导致流程中断:

  1. 错误使用getenv():getenv()是读取系统环境变量的函数,不能直接把APP_ID/APP_SECRET写在括号里,直接传入字符串即可。
  2. 调试代码阻断流程:echo "comming";die;会在OAuth授权后直接终止程序,无法获取和保存access token,必须移除。

修正后的boot.php

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require "../autoload.php";

// 直接传入你的开发者凭证
$pinterest = new DirkGroenen\Pinterest\Pinterest('4947671503463268619', 'ce54e73e9f1f366748f3e616b48574c90f8557458bc1ed126bce70c9a6ae70cb');

// 处理OAuth授权流程
if (isset($_GET["code"])) {
    $token = $pinterest->auth->getOAuthToken($_GET["code"]);
    $pinterest->auth->setOAuthToken($token->access_token);
    // 把token存在cookie里,有效期设为7天
    setcookie("access_token", $token->access_token, time() + 3600*24*7);
} else if (isset($_GET["access_token"])) {
    $pinterest->auth->setOAuthToken($_GET["access_token"]);
} else if (isset($_COOKIE["access_token"])) {
    $pinterest->auth->setOAuthToken($_COOKIE["access_token"]);
} else {
    // 没有token时跳转到登录页
    header("Location: index.php");
    exit;
}
?>

实现自定义数据传递(图片、名称、价格)

Pinterest的Pin API支持通过metadata字段添加价格等自定义信息,同时note字段可以作为Pin的名称,图片支持本地文件或远程URL两种方式。

完整的callback.php(含自定义数据)

<?php require "boot.php"; ?>
<!DOCTYPE html>
<html>
<head></head>
<body>
<?php
try {
    // 可选:新建一个画板用于存放自定义Pin,也可以直接用已有的画板(格式:用户名/画板名)
    $board = $pinterest->boards->create([
        "name" => "我的商品展示板",
        "description" => "存放带价格信息的自定义商品Pin"
    ]);
    $board_identifier = $board->id; // 用新建画板的ID
    // 或者直接用现有画板:$board_identifier = "你的用户名/已有画板名";

    // 创建带自定义数据的Pin
    $pin = $pinterest->pins->create([
        "board" => $board_identifier,
        // 本地图片路径(确保PHP有文件读取权限)
        "image" => "./testimage.jpg",
        // 也可以用远程图片URL:"image_url" => "https://你的域名/商品图片.jpg",
        "note" => "自定义商品名称:无线降噪蓝牙耳机", // Pin的显示名称
        "link" => "https://你的域名/商品详情页", // 点击Pin跳转的链接
        // 添加价格及其他自定义元数据
        "metadata" => [
            "price" => [
                "amount" => 129.99,
                "currency" => "USD" // 必须是ISO 4217货币代码,比如CNY、EUR
            ],
            // 可以额外添加自定义字段
            "custom_fields" => [
                "sku" => "BT-007",
                "category" => "消费电子"
            ]
        ]
    ]);

    echo "Pin创建成功!Pin ID:" . $pin->id;
} catch (Exception $e) {
    // 捕获异常,方便排查问题(比如权限不足、图片无法读取等)
    echo "出错啦:" . $e->getMessage();
}
?>
</body>
</html>

关键注意事项

  • 权限验证:确保你的Pinterest应用已经申请了write_public权限,这是创建Pin的必要权限。
  • 图片规范:支持JPG/PNG格式,建议尺寸≥600x900像素,避免使用过小或模糊的图片。
  • 元数据规则:metadata里的price字段必须包含amount(数字类型)和currency(标准货币代码),否则会被API拒绝。
  • 错误处理:一定要添加try-catch块,API请求可能因为网络、权限、参数格式等问题失败,捕获异常能快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:57:11