Как запросить shopify graphql-admin-api из API?

Я пытаюсь запросить shopify graphql-admin-api из моего api. Я делаю это в соответствии с документацией, предоставленной graphql-admin-api, но все равно выдает ошибки авторизации.

2 ответа

Перейдите в Приложения -> Управление приложениями внизу, а затем: Создайте частное приложение в Shopify, которое будет подключаться к вашему приложению. Убедитесь, что вы управляете разрешением на то, что хотите запросить

После создания частного приложения вы получите пароль , который вы можете использовать в качестве маркеров для HTTP - запросов с заголовком «X-Shopify-Access-токен» значением : пароль

        curl -X POST \
  https://{shop}.myshopify.com/admin/api/2021-04/graphql.json \
  -H 'Content-Type: application/graphql' \
  -H 'X-Shopify-Access-Token: {password}' \
  -d '
  {
    products(first: 5) {
      edges {
        node {
          id
          handle
        }
      }
      pageInfo {
        hasNextPage
      }
    }
  }
  '

Для получения дополнительной информации посетите: https://shopify.dev/docs/admin-api/getting-started#authentication

В NodeJS я использую пакет "graphql-request" для выполнения запросов и

      const mutation = gql`
      mutation createProduct(
        $input: ProductInput!
        $media: [CreateMediaInput!]
      ) {
        productCreate(input: $input, media: $media) {
          userErrors {
            field
            message
          }
          product {
            id
            metafields(first: 1) {
              edges {
                node {
                  id
                }
              }
            }
          }
        }
      }
    `;
     //const input = form your own input 
     const res = await graphQLClient.rawRequest(mutation, input);

Пользователи PHP могут выполнить эту функцию, чтобы сделать запрос в Shopify Admin API с помощью GraphQL.

Я использую GuzzleHttp (клиент PHP HTTP) для создания запроса

public function graph($query , $variables = []){
    $domain = 'xxx.myshopify.com';
    $url = 'https://'.$domain.'/admin/api/2019-10/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'=>$this->token // shopify app accessToken
        ],
    ]);

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

  $query = "{ shop { name email } }"; // this is example graphQL query

  $response = graph($query) // call this function 

Код ниже может помочь вам проверить, сколько стоит этот запрос graphQL.

$calls = $response->extensions->cost;
$apiCallLimitGraph = [
     'left'          => (int) $calls->throttleStatus->currentlyAvailable,
     'made'          => (int) ($calls->throttleStatus->maximumAvailable - $calls->throttleStatus->currentlyAvailable),
     'limit'         => (int) $calls->throttleStatus->maximumAvailable,
     'restoreRate'   => (int) $calls->throttleStatus->restoreRate,
     'requestedCost' => (int) $calls->requestedQueryCost,
     'actualCost'    => (int) $calls->actualQueryCost,
];
Другие вопросы по тегам