Quản lý và chuyển đổi dự án trên đám mây của Google

Để sử dụng Merchant API, bạn phải liên kết dự án trên đám mây của Google với tài khoản Merchant Center chính thông qua quy trình đăng ký nhà phát triển. Trong vòng đời của quá trình tích hợp, bạn có thể cần thay đổi mã dự án Google Cloud liên kết với tài khoản Merchant Center của mình, quản lý nhiều dự án trên các môi trường hoặc chuyển đổi dự án khi di chuyển từ Content API for Shopping.

Hướng dẫn này giải thích cách:

  • Thay đổi hoặc xoay vòng mã dự án Google Cloud cho một dự án tích hợp Merchant API hiện có mà không gây gián đoạn.
  • Huỷ đăng ký một dự án Google Cloud khỏi một tài khoản Merchant Center và đăng ký dự án đó với một tài khoản Merchant Center khác.
  • Chọn và thực hiện chiến lược chuyển đổi dự án trên đám mây Google Cloud phù hợp nếu bạn đang di chuyển từ Content API for Shopping sang Merchant API.

Điều kiện tiên quyết

Trước khi quản lý hoặc chuyển đổi các dự án trên Google Cloud, hãy xác minh rằng bạn đáp ứng các điều kiện tiên quyết để đăng ký làm nhà phát triển. Để biết thêm thông tin, hãy xem phần Điều kiện tiên quyết trong hướng dẫn Đăng ký làm nhà phát triển.

Các quy tắc và giới hạn chính

Khi lên kế hoạch thay đổi các dự án trên đám mây của Google Cloud, hãy lưu ý những quy tắc sau:

  • Đăng ký dự án một với nhiều: Một tài khoản Merchant Center chính có thể đăng ký nhiều dự án trên đám mây của Google cùng một lúc. Tuy nhiên, mỗi dự án trên đám mây của Google Cloud chỉ có thể được đăng ký với một tài khoản Merchant Center chính tại một thời điểm bất kỳ. Nếu bạn cố gắng đăng ký một dự án đã được liên kết với một tài khoản Merchant Center khác, thì hệ thống sẽ trả về lỗi ALREADY_EXISTS (409 Conflict) kèm theo lý do DUPLICATE_PROJECT_REGISTRATION.
  • Quyền riêng tư về quyền sở hữu dự án: Vì lý do bảo mật và quyền riêng tư, nhóm hỗ trợ Google Mua sắm và Merchant API không thể tiết lộ địa chỉ email của chủ sở hữu hoặc quản trị viên của một dự án trên Google Cloud. Nếu bạn mất quyền truy cập vào một dự án, hãy liên hệ với Nhóm hỗ trợ Google Cloud.
  • Việc gia hạn thời gian ngừng hoạt động của Content API for Shopping áp dụng cho từng dự án: Nếu bạn được phê duyệt gia hạn quyền truy cập vào Content API for Shopping, thì việc gia hạn đó chỉ áp dụng cho mã dự án cụ thể trên Google Cloud mà bạn đã gửi trong yêu cầu. Tiện ích không tự động chuyển sang các dự án mới trên Google Cloud.

Thay đổi mã dự án trên đám mây của Google cho tài khoản Merchant API

Nếu đã sử dụng Merchant API và cần chuyển hoạt động tích hợp sang một dự án Google Cloud mới (ví dụ: do tái cơ cấu tổ chức, chính sách thay đổi định kỳ thông tin xác thực hoặc mất quyền quản trị đối với một dự án cũ), bạn có thể chuyển đổi dự án mà không bị gián đoạn. Vì một tài khoản Merchant Center hỗ trợ nhiều dự án Google Cloud đã đăng ký cùng một lúc, nên bạn có thể đăng ký dự án mới trước khi ngừng sử dụng dự án cũ.

Bước 1: Tạo và định cấu hình dự án mới trên Google Cloud

  1. Tạo một dự án mới trong Google Cloud Console. Để biết hướng dẫn chi tiết, hãy xem bài viết Tạo dự án trên Google Cloud.
  2. Bật Merchant API (merchantapi.googleapis.com) trong dự án mới. Xem mục Bật Merchant API trong phần Tạo dự án trên đám mây của Google Cloud.
  3. Tạo thông tin xác thực (tài khoản dịch vụ hoặc mã ứng dụng khách OAuth 2.0) trong dự án trên đám mây mới trên Google Cloud.
  4. Thêm địa chỉ email xác thực (chẳng hạn như email tài khoản dịch vụ mới) làm người dùng có vai trò ADMIN trong tài khoản Merchant Center chính của bạn.

Bước 2: Đăng ký dự án trên đám mây của Google Cloud mới

Xác thực bằng thông tin đăng nhập từ dự án trên đám mây Google Cloud mới và gọi phương thức accounts.developerRegistration.registerGcp để liên kết dự án mới với tài khoản Merchant Center chính của bạn. Để biết hướng dẫn chi tiết, hãy xem phần Thực hiện lệnh gọi đăng ký trong bài viết Đăng ký làm nhà phát triển.

Bước 3: Xác minh các dự án trên đám mây của Google Cloud đã đăng ký

Để xác nhận rằng cả dự án Google Cloud hiện có và dự án Google Cloud mới đều được liên kết với tài khoản Merchant Center, hãy gọi phương thức accounts.developerRegistration.getDeveloperRegistration:

GET https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration
Authorization: Bearer ACCESS_TOKEN

Thay thế nội dung sau:

  • ACCOUNT_ID: mã truy cập Merchant Center của bạn
  • ACCESS_TOKEN: mã thông báo uỷ quyền để thực hiện lệnh gọi API

Phản hồi sẽ trả về tài nguyên DeveloperRegistration có số dự án Google Cloud dạng số của tất cả các dự án được liên kết trong trường gcpIds:

{
  "name": "accounts/ACCOUNT_ID/developerRegistration",
  "gcpIds": [
    "123456789012",
    "987654321098"
  ]
}

Bạn cũng có thể xác minh tài khoản Merchant Center mà dự án trên đám mây của Google đang gọi được đăng ký bằng cách gọi phương thức accounts.developerRegistration.getAccountForGcpRegistration:

GET https://merchantapi.googleapis.com/accounts/v1/accounts:getAccountForGcpRegistration
Authorization: Bearer ACCESS_TOKEN

Thay thế nội dung sau:

  • ACCESS_TOKEN: mã thông báo uỷ quyền được tạo bằng thông tin xác thực từ dự án trên đám mây của Google mà bạn muốn kiểm tra

Bước 4: Chuyển lưu lượng truy cập và huỷ đăng ký dự án cũ trên Google Cloud

  1. Cập nhật cấu hình ứng dụng để sử dụng thông tin xác thực từ dự án mới của bạn trên Google Cloud. Vì cả hai dự án đều đã đăng ký, nên khối lượng công việc của bạn sẽ chuyển đổi mà không bị gián đoạn.
  2. Sau khi tất cả lưu lượng truy cập đều sử dụng dự án mới, bạn có thể xoá đường liên kết đến dự án cũ (không bắt buộc) bằng cách xác thực bằng thông tin xác thực của dự án Google Cloud cũ và gọi phương thức accounts.developerRegistration.unregisterGcp:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp
Content-Type: application/json
Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN

Thay thế nội dung sau:

  • ACCOUNT_ID: mã truy cập Merchant Center của bạn
  • OLD_PROJECT_ACCESS_TOKEN: mã thông báo uỷ quyền từ dự án trên đám mây Google cũ để thực hiện Lệnh gọi API

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationName;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceClient;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceSettings;
import com.google.shopping.merchant.accounts.v1.UnregisterGcpRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 * This class demonstrates how to unregister the GCP project currently used to call the Merchant API
 * for a specific account.
 */
public class UnregisterGcpSample {

  public static void unregisterGcp(Config config) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    DeveloperRegistrationServiceSettings developerRegistrationServiceSettings =
        DeveloperRegistrationServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates DeveloperRegistration name to identify the DeveloperRegistration.
    // The name has the format: accounts/{account}/developerRegistration
    String name =
        DeveloperRegistrationName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .build()
            .toString();

    // Calls the API and propagates any network failures/errors.
    try (DeveloperRegistrationServiceClient developerRegistrationServiceClient =
        DeveloperRegistrationServiceClient.create(developerRegistrationServiceSettings)) {

      // Creates a request to unregister the GCP project.
      UnregisterGcpRequest request = UnregisterGcpRequest.newBuilder().setName(name).build();

      System.out.println("Sending UnregisterGcp request for: " + name);
      developerRegistrationServiceClient.unregisterGcp(request);
      System.out.println("Unregister GCP successful.");
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    unregisterGcp(config);
  }
}

cURL

curl -X POST \
  "https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN"

Chỉ định lại một dự án trên đám mây của Google Cloud đã đăng ký cho một tài khoản Merchant Center khác

Vì mỗi lần bạn chỉ có thể đăng ký một dự án Google Cloud cho một tài khoản Merchant Center chính, hãy làm theo các bước sau để chỉ định lại một dự án hiện có từ một tài khoản Merchant Center (OLD_ACCOUNT_ID) sang một tài khoản khác (NEW_ACCOUNT_ID). Để biết hướng dẫn về cách chọn tài khoản Merchant Center để đăng ký dự án, hãy xem phần Những điểm quan trọng cần lưu ý:

  1. Xác thực bằng thông tin xác thực của dự án trên đám mây Google Cloud có quyền truy cập vào OLD_ACCOUNT_ID và gọi unregisterGcp trên accounts/OLD_ACCOUNT_ID/developerRegistration.
  2. Xác minh rằng danh tính xác thực có vai trò ADMIN trên NEW_ACCOUNT_ID và NEW_ACCOUNT_ID có một trang web đã xác minh.
  3. Gọi registerGcp trên accounts/NEW_ACCOUNT_ID/developerRegistration bằng thông tin xác thực từ cùng một dự án Google Cloud. Nếu NEW_ACCOUNT_ID chưa có người dùng có vai trò API_DEVELOPER, hãy chuyển email người dùng hợp lệ trong trường yêu cầu developerEmail. Bạn không thể dùng địa chỉ email của tài khoản dịch vụ có đuôi .gserviceaccount.com làm developerEmail.

Chuyển đổi dự án trên đám mây của Google khi di chuyển từ Content API for Shopping

Khi di chuyển từ Content API for Shopping sang Merchant API, bạn có thể gặp phải các quy định hạn chế về quyền truy cập vào dự án trên đám mây cũ trên Google Cloud, chẳng hạn như nếu khoá API ban đầu được định cấu hình trực tiếp thông qua quy trình xác thực cũ của Merchant Center hoặc nếu chủ sở hữu ban đầu của dự án đã rời khỏi tổ chức của bạn.

Tuỳ thuộc vào việc bạn muốn giữ lại dự án hiện có hay sử dụng một dự án mới cho Merchant API trong khi vẫn giữ Content API for Shopping trên dự án cũ, hãy chọn một trong hai cách sau.

Chọn chiến lược dự án di chuyển

Trường hợp Có cần quyền quản trị đối với dự án cũ không? Các API cần bật Có cần tiện ích Content API for Shopping cho dự án mới không?
Cách 1: Giữ lại dự án hiện có Có (hoặc khôi phục thông qua Nhóm hỗ trợ Google Cloud) Bật Merchant API trên dự án hiện có (Content API for Shopping đã được bật) Không (phần mở rộng hiện có trên mã dự án cũ vẫn hợp lệ)
Cách 2: Giữ lại dự án cũ cho Content API for Shopping và sử dụng dự án mới cho Merchant API Không Bật Merchant API trên dự án mới (vẫn bật Content API for Shopping trên dự án cũ) Không (dự án cũ giữ lại tiện ích; dự án mới chỉ gọi Merchant API)

Cách 1: Giữ lại dự án Google Cloud hiện có

Chọn cách này nếu bạn muốn sử dụng dự án Google Cloud hiện có cho cả Content API for Shopping và Merchant API.

Trước khi bắt đầu, hãy xác minh hoặc khôi phục quyền truy cập vào dự án hiện có của bạn. Đăng nhập vào Google Cloud Console và xác nhận rằng tài khoản của bạn có bất kỳ vai trò nào sau đây trong dự án hiện tại:

  • Chủ sở hữu (roles/owner),
  • Người chỉnh sửa (roles/editor)
  • Quản trị viên sử dụng dịch vụ (roles/serviceusage.serviceUsageAdmin)
  1. Bật Merchant API: Bật merchantapi.googleapis.com trong Thư viện API của Google Cloud hoặc bằng lệnh gcloud. Để xem hướng dẫn từng bước, hãy xem bài viết Thiết lập phương thức xác thực API trong Merchant Center.
  2. Đăng ký dự án Google Cloud với Merchant Center: Làm theo các bước trong hướng dẫn Đăng ký làm nhà phát triển để cho phép các yêu cầu từ dự án hiện tại của bạn và gọi phương thức registerGcp để liên kết dự án Google Cloud hiện tại với tài khoản Merchant Center chính của bạn. Các khoá tài khoản dịch vụ hiện có và tiện ích Content API for Shopping đã được phê duyệt vẫn tiếp tục hoạt động mà không có thay đổi nào.

Cách 2: Sử dụng dự án Google Cloud cũ cho Content API for Shopping và một dự án mới cho Merchant API

Chọn phương án này nếu quy trình tích hợp Content API for Shopping cũ của bạn đã đang chạy với thông tin xác thực hợp lệ và một tiện ích được phê duyệt trên dự án trên đám mây Google Cloud cũ, đồng thời bạn muốn xây dựng quy trình tích hợp Merchant API mới trong một dự án trên đám mây Google Cloud riêng biệt, chuyên dụng:

  1. Giữ nguyên chế độ tích hợp Content API for Shopping trên dự án trên đám mây cũ: Giữ nguyên quy trình công việc và thông tin xác thực hiện có của Content API for Shopping trên dự án trên đám mây Google Cloud cũ. Nếu yêu cầu gia hạn cho mã dự án cũ của bạn được phê duyệt, thì chế độ tích hợp Content API for Shopping hiện tại của bạn sẽ tiếp tục hoạt động cho đến thời hạn mới.
  2. Tạo một dự án trên đám mây mới dành riêng cho Merchant API: Tạo một dự án trên đám mây mới, bật merchantapi.googleapis.com và tạo thông tin xác thực (tài khoản dịch vụ hoặc mã ứng dụng khách OAuth 2.0) cho khối lượng công việc mới của Merchant API.
  3. Đăng ký dự án mới: Làm theo các bước trong phần Đăng ký làm nhà phát triển để cho phép các yêu cầu từ dự án mới của bạn và gọi phương thức registerGcp bằng email liên hệ hợp lệ của nhà phát triển. Bạn không thể dùng email tài khoản dịch vụ (có đuôi .gserviceaccount.com) làm developerEmail.
  4. Di chuyển dần khối lượng công việc: Chuyển dần các lệnh gọi API từ dự án Content API for Shopping cũ sang dự án Merchant API mới trước ngày ngừng hoạt động theo lịch của Content API for Shopping (hoặc trước khi thời gian gia hạn được phê duyệt hết hạn) và ngừng sử dụng dự án cũ sau khi bạn hoàn tất quá trình di chuyển.

Trường hợp đặc biệt: Mất quyền truy cập vào dự án cũ trên Google Cloud trước khi hoàn tất quá trình di chuyển

Vì Content API for Shopping không còn được dùng nữa, nên API này không còn có trong Thư viện API của Google Cloud và không thể bật trên các dự án trên đám mây mới tạo trên Google Cloud. Do đó, bạn không thể tự di chuyển khối lượng công việc hiện có của Content API for Shopping sang một dự án mới trên Google Cloud.

Nếu bạn không thể thực hiện lệnh gọi Content API for Shopping từ dự án cũ nữa (ví dụ: do thông tin xác thực bị thu hồi hoặc không thể khôi phục quyền truy cập vào dự án):

  1. Liên hệ với Nhóm hỗ trợ Google Cloud để khôi phục quyền truy cập vào dự án hiện có của bạn trên Google Cloud (Lựa chọn 1) hoặc
  2. Làm theo Cách 2 để tạo và đăng ký một dự án trên đám mây Google Cloud mới, đồng thời di chuyển trực tiếp các quy trình làm việc bị ảnh hưởng sang Merchant API. Nếu bạn gặp phải vấn đề nghiêm trọng gây cản trở quá trình di chuyển, hãy liên hệ với nhóm hỗ trợ Merchant API.

Các bước tiếp theo