Не удается получить access_token и token_type из TokenProvider commercetools/sdk-auth

#javascript #reactjs #apollo-client #commercetools

Вопрос:

Я пытаюсь интегрировать apollo-клиент с commercetools, но не получаю сведения о токене и типе токена, ниже приведен пример кода.

 import ApolloClient from 'apollo-client';
import { createHttpLink } from 'apollo-link-http';
import { setContext } from 'apollo-link-context';
import { InMemoryCache } from 'apollo-cache-inmemory';
import SdkAuth, { TokenProvider } from '@commercetools/sdk-auth';

// Create token provider for the commercetools project
const tokenProvider = new TokenProvider({
  sdkAuth: new SdkAuth({
    host: 'https://auth.us-central1.gcp.commercetools.com/',
    projectKey: 'test-ecommerce-store',
    credentials: {
      clientId: '<clinet_id>',
      clientSecret: '<clientSecret>',
    },
    scopes: ['manage_products:test-ecommerce-store'],
  }),
  fetchTokenInfo: sdkAuth => sdkAuth.anonymousFlow(),
});

const httpLink = createHttpLink({
  uri: 'https://api.us-central1.gcp.commercetools.com/test-ecommerce-store/graphql',
});

const authLink = setContext((_, { headers = {} }) => tokenProvider.getTokenInfo()
  .then(tokenInfo => `${tokenInfo.token_type} ${tokenInfo.access_token}`)
  .then(authorization => ({ headers: { ...headers, authorization } })));

export default new ApolloClient({
  link: authLink.concat(httpLink),
  cache: new InMemoryCache()
});

 

ошибка: «invalid_scope»
описание ошибки: «Превышены разрешения: разрешение create_anonymous_token требуется для получения анонимного токена».
ошибки: [{код: «invalid_scope»,…}]
сообщение: «Превышены разрешения: для получения анонимного токена требуется разрешение create_anonymous_token».
Код состояния: 400

Ответ №1:

Чтобы получить маркер доступа для Анонимного сеанса, клиенту OAuth требуется область create_anonymous_token. Имеет ли клиент API, который вы используете для отправки этого запроса, такую область действия?

Количество анонимных токенов, которые вы можете создать, не ограничено.

Ответ №2:

Просматривая вашу ошибку, я могу просто определить проблему следующим образом.

Во время тестирования вашего кода вы использовали разрешенный порог создания анонимных токенов.

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

Комментарии:

1. В сообщении содержится жалоба на объем разрешений, а не на ограничение скорости

2. error_description: "Permissions exceeded: create_anonymous_token permission required to obtain an anonymous token." говорит, что лимит, разрешенный для генерации токенов, превысил разрешенную квоту. Я несколько раз сталкивался с подобным поведением в API, поэтому упомянул об этом в качестве ответа. Если это точно не причина, могут быть и другие причины, которые можно упомянуть в качестве ответов. У меня есть только одна возможность. Думаю, в голосовании «против» не было необходимости.