При попытке аутентификации пользователей в shopify появляется сообщение об ошибке: Поле «CustomerAccessTokenCreateInput» не существует для типа «Mutation» - PullRequest
0 голосов
/ 18 февраля 2020

Я использую node.js в своем приложении, с shopify-api-node (v3.2.0), чтобы аутентифицировать логин клиента вместе с другими функциями, если shopify. Согласно документации shopify (https://shopify.dev/docs/storefront-api/reference/mutation/customeraccesstokencreate), я использую GraphQL для доступа к API shopify. Мой код выглядит примерно так: -

const Shopify = require('shopify-api-node');

const shopify = new Shopify({
  shopName: process.env.SHOPIFY_DOMAIN_NAME,
  apiKey: process.env.SHOPIFY_API_KEY,
  password: process.env.SHOPIFY_API_KEY_PASSWORD
});

  const query = `mutation {
    customerAccessTokenCreate (input: {
      email: "user@mail.com",
      password: "password123"
     }
    ) 
    {
      customerAccessToken {
        accessToken
        expiresAt
      }
      customerUserErrors {
        code
        field
        message
      }
    }
  }`;

  shopify
    .graphql(query)
    .then((output) => {
      console.log(output);
    })
    .catch((err) => {
      console.error(err)
    });

После этого я получаю ошибку ниже: -

Error: Field 'customerAccessTokenCreate' doesn't exist on type 'Mutation'
    at got.then (/Users/admin/Documents/Code/shopify-node-app/node_modules/shopify-api-node/index.js:239:19)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  locations: [ { line: 2, column: 5 } ],
  path: [ 'mutation', 'customerAccessTokenCreate' ],
  extensions:
   { code: 'undefinedField',
     typeName: 'Mutation',
     fieldName: 'customerAccessTokenCreate' }

Даже я получаю то же самое от самого почтальона.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 18 февраля 2020

Существует два типа GraphQL:

Несмотря на то, что они кажутся схожими, strorefront намного более ограничен, но может использоваться на внешнем интерфейсе, в то время как админ более богат по методу и функциональности, но не может безопасно использоваться на font-end.

Документация и метод, который вы пытаетесь использовать, ссылаются на API-интерфейс Storefront, но используемый вами пакет предназначен для Admin GraphQL API.

Вы можете создать токен доступа к витрине магазина с помощью метода storefrontAccessToken, если вы хотите сделать запрос витрины, но Admin API GraphQL допускает дополнительные настройки.

Так что вам нужно убедиться, что вы используя правильный API.

Если вы планируете использовать API витрины, вам не следует использовать NodeJS и просто создать частное приложение (из Admin -> APP -> Private App), которое предоставит вам Сохраните маркер доступа к передней панели (если вы включите его внизу и выберите нужные области действия), который можно использовать непосредственно на внешней панели.

Если вы планируете использовать Admin API, вам потребуется создать Publi c приложение и разместить его, затем вы можете использовать NodeJS и передавать информацию через прокси-сервер в Shopify.

Сводка

Вы делаете запрос к API Storefront, в то время как использование библиотеки для API администратора.

...