Skip to main content

Recently, I needed to generate a token to log a customer into a web app based on Commercetools. Using the Java SDK to communicate with Commercetools, I found that their Authorization API offers several authorization flows:

 

  1. Client Credentials: Creates a token for an API Client.
  2. Password Flow: Creates a token using the customer's login credentials.
  3. Anonymous Session Flow: Creates a token for an anonymous session (for a customer who might log in or sign up later).
  4. Refresh Token Flow: Refreshes an access token.

 

In this article, I'll focus on generating an authentication token using the Password Flow. Commercetools provides an out-of-the-box method called GlobalCustomerPasswordTokenSupplier for this purpose. Below is the code snippet I used in a service class to generate the token. 
 

 

public static AuthenticationToken getTokenForGlobalCustomer(final String prefix, final String email, final String password) throws IOException {        final Properties prop = new Properties();        prop.load(ClientService.class.getResourceAsStream("/dev.properties"));        String projectKey = prop.getProperty(prefix + "projectKey");        String clientId = prop.getProperty(prefix + "clientId");        String clientSecret = prop.getProperty(prefix + "clientSecret");        AuthenticationToken token = null;        String scope = "";        try (final GlobalCustomerPasswordTokenSupplier globalCustomerPasswordTokenSupplier = new GlobalCustomerPasswordTokenSupplier(                clientId, clientSecret, email, password, scope,                 ServiceRegion.GCP_AUSTRALIA_SOUTHEAST1.getPasswordFlowTokenURL(projectKey),                 HttpClientSupplier.of().get())) {            token = globalCustomerPasswordTokenSupplier.getToken().get();        } catch (Exception e) {            e.printStackTrace();        }        return token;    }

 

Be the first to reply!

Reply