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

如何通过GraphQL获取Shopify商品数字ID以调用Admin API

解决Shopify GraphQL节点ID转REST数字ID的问题

这确实是Shopify API里常见的小坑——GraphQL返回的全局节点ID和REST API需要的数字资源ID格式不一样,不过有两种简单的方法可以拿到你需要的数字ID:

方法1:查询Product时直接请求legacyResourceId字段

Shopify的GraphQL API里,Product节点本身就提供了legacyResourceId字段,它就是对应REST API的数字ID。你只需要在查询Product的时候把这个字段加进去就行。

比如你的GraphQL查询可以写成这样:

query FetchProduct($productId: ID!) {
  product(id: $productId) {
    id # 原来的全局节点ID
    legacyResourceId # 这里就是你需要的数字格式ID
    title
    # 其他你需要的字段
  }
}

用Buy SDK执行这个查询后,从返回的Product对象里直接取legacyResourceId的值,就能拿到像6243834538这样的数字ID,直接用它调用Admin REST API的元字段接口就不会报400错误了。

方法2:解析已有的全局节点ID

如果你已经拿到了全局节点ID(比如Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzEwMDcyMDgwOTc1),也可以通过解码来提取数字ID。这个全局ID是Base64编码的字符串,解码后格式是gid://shopify/Product/10072080975,最后一段就是数字ID。

在Android里你可以这样写代码解析:

import android.util.Base64

fun getLegacyProductId(globalId: String): String {
    // 解码Base64字符串
    val decodedString = String(Base64.decode(globalId, Base64.DEFAULT))
    // 分割字符串取最后一段
    return decodedString.split("/").last()
}

调用这个方法传入你的全局节点ID,就能得到对应的数字ID了。

两种方法都能解决问题,个人更推荐第一种方法——直接查询字段更可靠,也不用自己处理解码逻辑,避免因为Shopify编码规则变化出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:49:05