Our Partner & Developer boards on the community are moving to a brand new home: the .dev community forums! While you can still access past discussions here, for all your future app and storefront building questions, head over to the new forums.

We're moving the community! Starting July 7, the current community will be read-only for approx. 2 weeks. You can browse content, but posting will be temporarily unavailable. Learn more

Fail to retreive Storefront API customerAccessTokenCreate

Fail to retreive Storefront API customerAccessTokenCreate

66zombiestech
Excursionist
12 1 1

Hi guys,

I'm trying to get CustomerAccessToken by querying GraphQL in my React App. So far, I tried testing on GraphiQL and everything worked just fine. However, when I tried querying in my React App, I got this error

""Variable $input of type CustomerAccessTokenCreateInput! was provided invalid value""

Sorry if this is a noobie question. GraphQL is pretty new for me. 

Here's my code.

componentDidMount() {
    const query = `
      mutation customerAccessTokenCreate($input: CustomerAccessTokenCreateInput!) {
        customerAccessTokenCreate(input: $input) {
          customerAccessToken {
            accessToken
            expiresAt
          }
          customerUserErrors {
            code
            field
            message
          }
        }
      }    
    `
    const  input = {
        "email": "myemail@gmail.com",
        "password": "abcdefg"
      }

    fetch('https://my-store.myshopify.com/api/2020-07/graphql.json', {
      method: 'POST',
      headers: {
        "Accept": "application/json",
        "Content-Type": "application/graphql",
        'X-Shopify-Storefront-Access-Token': `${storefrontAccessToken.shopifyCredentials}`
      },
      body: query,
      variables: JSON.stringify({ input })
    })
    .then(res => res.json())
    .then(data => console.log(data))
  }


Not sure what am I missing here. I'd appreciate any help.

Replies 2 (2)

66zombiestech
Excursionist
12 1 1

I managed to make it work like this

  const customerInfo = {
      email: "myemail@gmail.com",
      password: "abcdefg"
    }

    const query = `
      mutation customerAccessTokenCreate {
        customerAccessTokenCreate(input: {
          email: "${customerInfo.email}",
          password: "${customerInfo.password}"
        }) {
          customerAccessToken {
            accessToken
            expiresAt
          }
          customerUserErrors {
            code
            field
            message
          }
        }
      }
    `


Is there any other more concise ways ? 

KamalDixit
Shopify Partner
1 0 0

It will work this way.

componentDidMount() {
    const body = {
      query: `
        mutation customerAccessTokenCreate($input: CustomerAccessTokenCreateInput!) {
          customerAccessTokenCreate(input: $input) {
            customerAccessToken {
              accessToken
              expiresAt
            }
            customerUserErrors {
              code
              field
              message
            }
          }
        }    
      `,
      variables:{
        input: {
          "email": "myemail@gmail.com",
          "password": "abcdefg"
        }
      }
    };

    fetch('https://my-store.myshopify.com/api/2020-07/graphql.json', {
      method: 'POST',
      headers: {
        "Accept": "application/json",
        "Content-Type": "application/graphql",
        'X-Shopify-Storefront-Access-Token': `${storefrontAccessToken.shopifyCredentials}`
      },
      body: JSON.stringify(body),
    })
    .then(res => res.json())
    .then(data => console.log(data))
  }