【问题标题】:Shopify GraphQL PHPShopify GraphQL PHP
【发布时间】:2020-07-27 07:45:08
【问题描述】:

我在使用 Shopify 的 GraphQL API 时遇到了一些问题。我已经进行了一堆 REST 调用,但是对于这个我需要 GraphQL。 我正在尝试将视频添加到某些产品中,这就是我目前所拥有的:

mutation productCreateMedia($productId: ID!, $media: [CreateMediaInput!]!) {
  productCreateMedia(productId: $productId, media: $media) {
    media {
      alt
    }
    mediaUserErrors {
      code
      field
      message
    }
    product {
      id
    }
  }
}

对于变量,我有一个数组:

$gid = "gid://shopify/Product/".row('shopifyID');
$videoLink = "https://www.youtube.com/watch?v=".row('youtubeID');
$media = array('originalSource'=>$videoLink,'mediaContentType'=>'EXTERNAL_VIDEO');
$variables = array ('productId'=>$gid,'media'=>$media);

我使用下一个函数进行调用:

function graph($query , $variables = []){
$domain = 'domain.myshopify.com';
$url = 'https://'.$domain.'/admin/api/2020-01/graphql.json';

$request = ['query' => $query];

if(count($variables) > 0) { $request['variables'] = $variables; }

$req = json_encode($request);
$parameters['body'] = $req;

$stack = HandlerStack::create();
$client = new \GuzzleHttp\Client([
    'handler'  => $stack,
    'headers'  => [
        'Accept'       => 'application/json',
        'Content-Type' => 'application/json',
        'X-Shopify-Access-Token'=>'myAPIpass' // shopify app accessToken
    ],
]);

$response = $client->request('post',$url,$parameters);
return $body =  json_decode($response->getBody(),true);

}

但我得到的是: ID 类型的变量 productId!提供了无效值

我为 REST API 使用了 php-shopify SDK,但不知道它是如何在 GraphQL 上工作的,所以采用了通常的方式,即调用 JSON 端点。 对我在这里做错的任何帮助?

【问题讨论】:

    标签: graphql shopify media


    【解决方案1】:

    所以...回答我自己的问题...shopify ID 字符串必须是 base 64 编码。 我只添加了这一行,它现在可以工作了:

    $gid = base64_encode($gid);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-22
      • 2019-04-06
      • 2020-09-30
      • 2020-03-10
      • 2021-04-14
      • 1970-01-01
      • 2021-04-10
      • 2019-09-29
      相关资源
      最近更新 更多