Shopify Storefront API error Delegate Access Token
Solution:
Maybe you just need to change delegateAccessScope: to delegate_access_scope per doc, https://shopify.dev/apps/auth/oauth/delegate-access-tokens/create (https://shopify.dev/apps/auth/oauth/delegate-access-tokens/create)
{ "delegate_access_scope": [ "write_orders" ], "expires_in": 3600 }
Answer
Solution:
Ok, so I figured it out. I don't actually want a delegateAccessToken to create a user but to have a Storefront API Access Token. This may get a bit confusing but you use your Admin Access Token to request a storefront access token like so (I use graphql-request on npm):
const accessToken = gql`mutation storefrontAccessTokenCreate($input: StorefrontAccessTokenInput!) {
storefrontAccessTokenCreate(input: $input) {
shop {
id
}
storefrontAccessToken {
accessToken
}
userErrors {
field
message
}
}
}`
const accessTokenVars = {
"input": {
"title": "my-access-token"
}
}
const queryAccessTokenData = await adminGraphQLClient.request(accessToken, accessTokenVars);
From here you now have a Storefront Access Token and can make a call via Oauth to create a customer like so:
const shopifyUserQuery = gql`mutation customerCreate($input: CustomerCreateInput!) {
customerCreate(input: $input) {
customer {
id
firstName
lastName
acceptsMarketing
}
customerUserErrors {
field
message
code
}
}
}`
const shopifyUserVars =
{
"input": {
"firstName": values.firstName,
"lastName": values.lastName,
"email": values.email,
"password": values.password,
"acceptsMarketing": false,
}
}
// We need to switch the default storefront headers over to our private API key
sfGraphQLClient.headers = {
'X-Shopify-Storefront-Access-Token': queryAccessTokenData.storefrontAccessTokenCreate.storefrontAccessToken.accessToken,
'Content-Type': 'application/json'
}
const shopifyCreateCustData = await sfGraphQLClient.request(shopifyUserQuery, shopifyUserVars);
This will now create the user using the Storefront API.
Source
Didn't find the answer?
Our community is visited by hundreds of Shopify development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.