Shopify GraphQL PHP
Shopify GraphQL PHP
我在使用 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!提供的值无效
我使用了 php-shopify SDK for REST API,但无法弄清楚它是如何用于 GraphQL 的,所以采用了通常的方法,只调用 JSON端点。
对我在这里做错的事情有帮助吗?
所以...回答我自己的问题...shopify ID 字符串必须采用 base 64 编码。
我只添加了这一行,现在可以使用了:
$gid = base64_encode($gid);
我在使用 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!提供的值无效
我使用了 php-shopify SDK for REST API,但无法弄清楚它是如何用于 GraphQL 的,所以采用了通常的方法,只调用 JSON端点。 对我在这里做错的事情有帮助吗?
所以...回答我自己的问题...shopify ID 字符串必须采用 base 64 编码。 我只添加了这一行,现在可以使用了:
$gid = base64_encode($gid);