이 문서는 Recommendations AI 전용 문서입니다. 제한된 GA 단계에서 Retail Search 및 통합 Retail 콘솔을 사용해 보려면 Cloud 영업팀에 문의하세요. Retail Search를 사용할 계획이 없으면 추가 알림이 있을 때까지 권장사항 콘솔에 남아 있으세요.

Recommendations AI의 v1beta 버전을 사용하는 경우 Retail API 버전으로 마이그레이션합니다.

시작하기 전에

이 페이지에서는 Recommendations AI를 사용하기 전에 수행해야 하는 단계를 간략하게 설명합니다.

프로젝트 설정

Recommendations AI에 액세스하려면 Google Cloud 프로젝트를 만들어야 합니다. 프로젝트를 설정하려면 다음 단계를 따르세요.

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리 페이지로 이동

  2. 페이지 상단의 드롭다운에서 프로젝트를 만들려는 조직을 선택합니다.

  3. 프로젝트 만들기를 클릭합니다.

  4. 나타나는 새 프로젝트 창에 프로젝트 이름을 입력하고 해당되는 결제 계정을 선택합니다.

  5. 폴더에 프로젝트를 추가하려면 위치 상자에 폴더 이름을 입력합니다.

  6. 새 프로젝트 세부정보 입력을 마쳤으면 만들기를 클릭합니다.

  7. Google Cloud 제품에 대해 Retail API를 사용 설정합니다.

    Retail API 사용 설정

    Google Cloud Console에서 사용 설정 버튼을 클릭하여 API를 사용 설정합니다.

애플리케이션에 대한 인증 설정

Retail API에 액세스하려면 다음 인증 방법을 모두 설정해야 합니다.

  • 서비스 계정 - 애플리케이션은 서비스 계정을 사용하여 Product 호출을 인증합니다.

  • API 키 - 애플리케이션이 사용자 이벤트 로깅 API 호출에 API 키를 사용합니다.

서비스 계정 만들기

  1. Cloud Console 사용자 인증 정보 페이지로 이동합니다.

  2. 사용자 인증 정보를 만들 프로젝트를 선택합니다. 프로젝트가 이미 선택되어 있을 수 있습니다.

  3. 사용자 인증 정보 만들기를 클릭한 후 서비스 계정 키를 선택합니다.

  4. 다음 필드를 입력합니다.

    필드
    서비스 계정 새 서비스 계정
    서비스 계정 이름 enter a name for your service account
    역할 서비스 계정 > 서비스 계정 토큰 생성자
    Recommendations AI > Recommendations AI 편집자
    키 유형 JSON
  5. 만들기를 클릭하여 서비스 계정을 만듭니다.

    새 서비스 계정의 공개 키/비공개 키가 포함된 JSON 파일이 컴퓨터에 자동으로 다운로드됩니다. 이 JSON 파일은 서비스 계정 키의 유일한 사본입니다. 이를 안전한 곳에 보관해야 합니다. JSON 키 파일은 애플리케이션에서 액세스할 수 있는 위치에 저장되어야 합니다(서비스 계정 (OAuth 2.0)을 사용하여 인증your-service-account-json-key-file 참조).

로컬 환경에 서비스 계정 추가

cURL 명령줄 도구를 사용하여 Retail API를 호출하려면 로컬 환경에서 서비스 계정을 사용할 수 있도록 조치해야 합니다. cURLgcloud auth application-default print-access-token 명령어를 사용하여 Google Cloud Cloud SDK를 사용하는 서비스 계정의 액세스 토큰을 얻습니다. SDK를 다운로드하고 설치하려면 Cloud SDK를 참조하세요.

  export GOOGLE_APPLICATION_CREDENTIALS=path-to-service-account-json-key-file

API 키 만들기

  1. Cloud Console 사용자 인증 정보 페이지로 이동합니다.

  2. Google Cloud Console 페이지 상단의 프로젝트 드롭다운에서 프로젝트를 선택합니다(프로젝트가 이미 선택되어 있을 수 있음).

  3. 사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다. 리퍼러 제한사항을 추가하지 않습니다. 일부 사용자 개인정보 보호 설정은 리퍼러 URL을 전달하지 않는 것으로 알려져 있습니다.

    • 사용자 이벤트 로깅을 호출할 때 사용할 생성된 API 키를 기록합니다.
  4. 보안 강화를 위해 Retail 서비스(https://retail.googleapis.com/*)에 대한 액세스를 제한하는 HTTP 제한을 API 키에 추가합니다.

예시

서비스 계정을 사용한 인증(OAuth 2.0)

다음은 서비스 계정을 사용한 OAuth 2.0 인증의 자바 예시입니다. 자세한 내용은 인증 문서를 참조하세요. Google은 애플리케이션에서 OAuth2 인증을 구현하는 데 사용할 수 있는 7개 언어의 클라이언트 라이브러리를 제공합니다. HTTP/REST를 직접 구현하려면 REST 인증 안내를 따르세요.

이 예시에서 your-service-account-json-key-file은 서비스 계정의 JSON 키 파일 경로로 바꿉니다.

// Simple Java example of using Google Cloud OAuth client library.
//
// Please see here for the list of libraries in different languages:
// https://developers.google.com/identity/protocols/OAuth2#libraries
//
// The following example depends on the google api client library.
//
// Maven:
//    <dependency>
//      <groupId>com.google.api-client</groupId>
//      <artifactId>google-api-client</artifactId>
//      <version>1.22.0</version>
//    </dependency>
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.json.JsonHttpContent;
import com.google.api.client.json.GenericJson;
import com.google.api.client.json.jackson2.JacksonFactory;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class RetailApiSample {
  public static final String CREATE_PRODUCT_URL =
     "https://retail.googleapis.com/v2/projects/[PROJECT_NUMBER]/locations/global/catalogs/default_catalog/branches/0/products";

  public static GoogleCredential authorize() throws Exception {
    return GoogleCredential.fromStream(new FileInputStream("your-service-account-json-key-file"))
        .createScoped(Collections.singleton("https://www.googleapis.com/auth/cloud-platform"))
        .setExpirationTimeMilliseconds(new Long(3600 * 1000));;
  }

  // Build an example product.
  public static GenericJson getProduct() {
    GenericJson categories = new GenericJson()
        .set("categories", Arrays.asList("Electronics > Computers", "Laptops"));
    GenericJson priceInfo = new GenericJson
        .set("currency_code", "USD")
        .set("price", 800.00)
        .set("original_price", 1000.00);

    return new GenericJson()
        .set("name", "projects/[PROJECT_NUMBER]/locations/global/catalogs/default_catalog/branches/0/products/[ProductName]")
        .set("title", "Sample Laptop")
        .set("description", "Indisputably the most fantastic laptop ever created.")
        .set("categories", categories)
        .set("price_info", priceInfo)
        .set("availability", "IN_STOCK")
        .set("available_quantity", 1219);
  }

  public static void main(String[] args) {
    try {
      GoogleCredential credential = RetailApiSample.authorize();

      HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
      HttpRequestFactory requestFactory = httpTransport.createRequestFactory();
      HttpRequest request = requestFactory.buildPostRequest(new GenericUrl(CREATE_PRODUCT_URL),
          new JsonHttpContent(new JacksonFactory(), RetailApiSample.getProduct()));
      credential.initialize(request);
      HttpResponse response = request.execute();
      System.out.println("Response content: " + response.parseAsString());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

API 키를 사용한 인증

다음은 명령줄에서 curl 명령어를 사용하여 API 키로 인증하는 예시입니다. api-key는 이전 섹션에서 만든 API 키로 바꿉니다.

URL="https://retail.googleapis.com/v2/projects/[PROJECT_ID]/locations/global/catalogs/default_catalog/userEvents:write?key=api-key"

DATA='{
  "user_attributes": {
    ...
  },
  "user_event_detail": {
    ...
  }
}'

echo $URL
curl -H 'Content-Type: application/json' -X POST -d "${DATA}"  $URL