จัดการและเปลี่ยนโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google

หากต้องการใช้ Merchant API คุณต้องลิงก์โปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google กับบัญชี Merchant Center หลักผ่านการลงทะเบียนนักพัฒนาแอป ตลอดวงจรการผสานรวม คุณอาจต้องเปลี่ยนรหัสโปรเจ็กต์ Google Cloud ที่เชื่อมโยงกับบัญชี Merchant Center, จัดการหลายโปรเจ็กต์ในสภาพแวดล้อมต่างๆ หรือเปลี่ยนโปรเจ็กต์เมื่อย้ายข้อมูลจาก Content API สำหรับ Shopping

คู่มือนี้จะอธิบายวิธีดำเนินการต่อไปนี้

  • เปลี่ยนหรือหมุนเวียนรหัสโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google สำหรับการผสานรวม Merchant API ที่มีอยู่โดยไม่มีช่วงพักการทำงาน
  • ยกเลิกการลงทะเบียนโปรเจ็กต์ Google Cloud จากบัญชี Merchant Center บัญชีหนึ่ง แล้วลงทะเบียนกับบัญชี Merchant Center บัญชีอื่น
  • เลือกและใช้กลยุทธ์การเปลี่ยนโปรเจ็กต์ Google Cloud ที่เหมาะสมหากคุณกำลังย้ายข้อมูลจาก Content API for Shopping ไปยัง Merchant API

ข้อกำหนดเบื้องต้น

ก่อนจัดการหรือเปลี่ยนโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google โปรดตรวจสอบว่าคุณมีคุณสมบัติตรงตามข้อกำหนดเบื้องต้นสำหรับการลงทะเบียนนักพัฒนาแอป ดูรายละเอียดเพิ่มเติมได้ที่ส่วนข้อกำหนดเบื้องต้นของคู่มือลงทะเบียนเป็นนักพัฒนาแอป

กฎและข้อจำกัดที่สำคัญ

เมื่อวางแผนการเปลี่ยนแปลงโปรเจ็กต์ Google Cloud โปรดคำนึงถึงกฎต่อไปนี้

  • การลงทะเบียนโปรเจ็กต์แบบ 1 ต่อหลาย: บัญชี Merchant Center หลักบัญชีเดียวสามารถลงทะเบียนโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google Cloud หลายโปรเจ็กต์พร้อมกันได้ อย่างไรก็ตาม โปรเจ็กต์ Google Cloud แต่ละโปรเจ็กต์จะลงทะเบียนกับบัญชี Merchant Center หลักได้ครั้งละ 1 บัญชีเท่านั้น การพยายามลงทะเบียนโปรเจ็กต์ที่ลิงก์กับบัญชี Merchant Center อื่นอยู่แล้วจะแสดงข้อผิดพลาด ALREADY_EXISTS (409 Conflict) พร้อมเหตุผล DUPLICATE_PROJECT_REGISTRATION
  • ความเป็นส่วนตัวในการเป็นเจ้าของโปรเจ็กต์: ด้วยเหตุผลด้านความปลอดภัยและความเป็นส่วนตัว ทีมสนับสนุนของ Google Shopping และ Merchant API ไม่สามารถเปิดเผยอีเมลของเจ้าของหรือผู้ดูแลระบบของโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google Cloud ได้ หากคุณเสียสิทธิ์เข้าถึงโปรเจ็กต์ โปรดติดต่อทีมสนับสนุนของ Google Cloud
  • ส่วนขยายการปิด Content API for Shopping เป็นแบบเฉพาะโปรเจ็กต์: หากคุณได้รับการอนุมัติสิทธิ์เข้าถึงแบบขยายเวลาสำหรับ Content API for Shopping ส่วนขยายดังกล่าวจะมีผลกับรหัสโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ที่เฉพาะเจาะจงซึ่งส่งมาในคำขอเท่านั้น ส่วนขยายจะไม่โอนไปยังโปรเจ็กต์ Google Cloud ใหม่โดยอัตโนมัติ

เปลี่ยนรหัสโปรเจ็กต์ Google Cloud สำหรับบัญชี Merchant API

หากใช้ Merchant API อยู่แล้วและต้องการเปลี่ยนการผสานรวมไปยังโปรเจ็กต์ Google Cloud ใหม่ เช่น เนื่องจากการปรับโครงสร้างองค์กร นโยบายการหมุนเวียนข้อมูลเข้าสู่ระบบ หรือการสูญเสียสิทธิ์การเข้าถึงระดับผู้ดูแลระบบในโปรเจ็กต์เก่า คุณสามารถเปลี่ยนโปรเจ็กต์ได้โดยไม่ต้องหยุดทำงาน เนื่องจากบัญชี Merchant Center รองรับโปรเจ็กต์ Google Cloud ที่ลงทะเบียนไว้หลายโปรเจ็กต์พร้อมกัน คุณจึงลงทะเบียนโปรเจ็กต์ใหม่ก่อนที่จะเลิกใช้โปรเจ็กต์เก่าได้

ขั้นตอนที่ 1: สร้างและกำหนดค่าโปรเจ็กต์ Google Cloud ใหม่

  1. สร้างโปรเจ็กต์ใหม่ในคอนโซล Google Cloud โปรดดูวิธีการโดยละเอียดที่หัวข้อสร้างโปรเจ็กต์ Google Cloud
  2. เปิดใช้ Merchant API (merchantapi.googleapis.com) ในโปรเจ็กต์ใหม่ ดูส่วนเปิดใช้ Merchant API จากสร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google
  3. สร้างข้อมูลรับรองการตรวจสอบสิทธิ์ (บัญชีบริการหรือรหัสไคลเอ็นต์ OAuth 2.0) ในโปรเจ็กต์ Google Cloud ใหม่
  4. เพิ่มอีเมลที่ใช้ตรวจสอบสิทธิ์ (เช่น อีเมลบัญชีบริการใหม่) เป็นผู้ใช้ที่มีบทบาทADMINในบัญชี Merchant Center หลัก

ขั้นตอนที่ 2: ลงทะเบียนโปรเจ็กต์ Google Cloud ใหม่

ตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบจากโปรเจ็กต์ Google Cloud ใหม่ แล้วเรียกใช้เมธอด accounts.developerRegistration.registerGcp เพื่อลิงก์โปรเจ็กต์ใหม่กับบัญชี Merchant Center หลัก ดูวิธีการโดยละเอียดได้ที่ส่วนทำการเรียกใช้การลงทะเบียนจากลงทะเบียนเป็นนักพัฒนาแอป

ขั้นตอนที่ 3: ยืนยันโปรเจ็กต์ Google Cloud ที่ลงทะเบียนไว้

หากต้องการยืนยันว่าทั้งโปรเจ็กต์ Google Cloud ที่มีอยู่และโปรเจ็กต์ใหม่ลิงก์กับบัญชี Merchant Center ให้เรียกใช้เมธอด accounts.developerRegistration.getDeveloperRegistration ดังนี้

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

แทนที่ค่าต่อไปนี้

  • ACCOUNT_ID: รหัส Merchant Center
  • ACCESS_TOKEN: โทเค็นการให้สิทธิ์เพื่อเรียก API

การตอบกลับจะแสดงทรัพยากร DeveloperRegistration พร้อมหมายเลขโปรเจ็กต์ Google Cloud ที่เป็นตัวเลขของโปรเจ็กต์ที่ลิงก์ทั้งหมดในช่อง gcpIds ดังนี้

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

นอกจากนี้ คุณยังยืนยันได้ว่าโปรเจ็กต์ Google Cloud ที่เรียกใช้ลงทะเบียนไว้กับบัญชี Merchant Center ใดโดยเรียกใช้เมธอด accounts.developerRegistration.getAccountForGcpRegistration ดังนี้

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

แทนที่ค่าต่อไปนี้

  • ACCESS_TOKEN: โทเค็นการให้สิทธิ์ที่สร้างขึ้นโดยใช้ข้อมูลเข้าสู่ระบบจากโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ที่ต้องการตรวจสอบ

ขั้นตอนที่ 4: เปลี่ยนเส้นทางการรับส่งข้อมูลและยกเลิกการลงทะเบียนโปรเจ็กต์ที่อยู่ในระบบคลาวด์เดิม

  1. อัปเดตการกำหนดค่าแอปพลิเคชันเพื่อใช้ข้อมูลเข้าสู่ระบบจากโปรเจ็กต์ Google Cloud ใหม่ เนื่องจากมีการลงทะเบียนทั้ง 2 โปรเจ็กต์ ภาระงานของคุณจึงเปลี่ยนผ่านได้โดยไม่หยุดชะงัก
  2. เมื่อการเข้าชมทั้งหมดใช้โปรเจ็กต์ใหม่แล้ว คุณจะนำลิงก์โปรเจ็กต์เก่าออกได้ (ไม่บังคับ) โดยตรวจสอบสิทธิ์ด้วยข้อมูลเข้าสู่ระบบโปรเจ็กต์ Google Cloud เก่า แล้วเรียกใช้เมธอด 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

แทนที่ค่าต่อไปนี้

  • ACCOUNT_ID: รหัส Merchant Center
  • OLD_PROJECT_ACCESS_TOKEN: โทเค็นการให้สิทธิ์จากโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google เดิมเพื่อทำการเรียก 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"

กำหนดโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ที่ลงทะเบียนไว้ให้กับบัญชี Merchant Center อื่นอีกครั้ง

เนื่องจากโปรเจ็กต์ Google Cloud สามารถลงทะเบียนกับบัญชี Merchant Center หลักได้ครั้งละ 1 บัญชีเท่านั้น ให้ทำตามขั้นตอนต่อไปนี้เพื่อกำหนดโปรเจ็กต์ที่มีอยู่ใหม่จากบัญชี Merchant Center หนึ่ง (OLD_ACCOUNT_ID) ไปยังอีกบัญชีหนึ่ง (NEW_ACCOUNT_ID) ดูหลักเกณฑ์ในการเลือกบัญชี Merchant Center ที่จะลงทะเบียนโปรเจ็กต์ได้ที่ข้อควรพิจารณาที่สำคัญ

  1. ตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบจากโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ที่มีสิทธิ์เข้าถึง OLD_ACCOUNT_ID และเรียกใช้ unregisterGcp ใน accounts/OLD_ACCOUNT_ID/developerRegistration
  2. ตรวจสอบว่าข้อมูลประจำตัวที่ตรวจสอบสิทธิ์มีบทบาท ADMIN ใน NEW_ACCOUNT_ID และ NEW_ACCOUNT_ID มีเว็บไซต์ที่ได้รับการยืนยันแล้ว
  3. เรียกใช้ registerGcp ใน accounts/NEW_ACCOUNT_ID/developerRegistration โดยใช้ข้อมูลเข้าสู่ระบบจากโปรเจ็กต์ Google Cloud เดียวกัน หาก NEW_ACCOUNT_ID ยังไม่มีผู้ใช้ที่มีบทบาท API_DEVELOPER ให้ส่งอีเมลผู้ใช้ที่ถูกต้องในช่องคำขอ developerEmail อีเมลบัญชีบริการที่ลงท้ายด้วย .gserviceaccount.com จะใช้เป็น developerEmail ไม่ได้

เปลี่ยนโปรเจ็กต์ Google Cloud เมื่อย้ายข้อมูลจาก Content API for Shopping

เมื่อย้ายข้อมูลจาก Content API for Shopping ไปยัง Merchant API คุณอาจพบข้อจำกัดด้านการเข้าถึงในโปรเจ็กต์ Google Cloud เดิม เช่น หากคีย์ API เดิมได้รับการกำหนดค่าโดยตรงผ่านเวิร์กโฟลว์การตรวจสอบสิทธิ์ Merchant Center เดิม หรือหากเจ้าของโปรเจ็กต์เดิมออกจากองค์กรไปแล้ว

เลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้ โดยขึ้นอยู่กับว่าคุณต้องการเก็บโปรเจ็กต์ที่มีอยู่หรือใช้โปรเจ็กต์ใหม่สำหรับ Merchant API ขณะที่ยังคงใช้ Content API for Shopping ในโปรเจ็กต์เดิม

เลือกกลยุทธ์โปรเจ็กต์การย้ายข้อมูล

สถานการณ์ ต้องมีสิทธิ์เข้าถึงระดับผู้ดูแลระบบในโปรเจ็กต์เก่าไหม API ที่จะเปิดใช้ ต้องใช้ส่วนขยาย Content API for Shopping ในโปรเจ็กต์ใหม่ไหม
ตัวเลือกที่ 1: เก็บโปรเจ็กต์ที่มีอยู่ไว้ ใช่ (หรือกู้คืนผ่านทีมสนับสนุนของ Google Cloud) เปิดใช้ Merchant API ในโปรเจ็กต์ที่มีอยู่ (เปิดใช้ Content API for Shopping อยู่แล้ว) ไม่ (ส่วนขยายที่มีอยู่ในรหัสโปรเจ็กต์เก่ายังคงใช้งานได้)
ตัวเลือกที่ 2: เก็บโปรเจ็กต์เก่าไว้สำหรับ Content API for Shopping และใช้โปรเจ็กต์ใหม่สำหรับ Merchant API ไม่ใช่ เปิดใช้ Merchant API ในโปรเจ็กต์ใหม่ (เปิดใช้ Content API for Shopping ไว้ในโปรเจ็กต์เก่า) ไม่ (โปรเจ็กต์เก่าจะเก็บส่วนขยายไว้ ส่วนโปรเจ็กต์ใหม่จะเรียกใช้เฉพาะ Merchant API)

ตัวเลือกที่ 1: เก็บโปรเจ็กต์ Google Cloud ที่มีอยู่ไว้

เลือกตัวเลือกนี้หากต้องการใช้โปรเจ็กต์ Google Cloud ที่มีอยู่สำหรับทั้ง Content API for Shopping และ Merchant API

ก่อนเริ่มต้น ให้ยืนยันหรือกู้คืนสิทธิ์เข้าถึงโปรเจ็กต์ที่มีอยู่ ลงชื่อเข้าใช้คอนโซล Google Cloud และยืนยันว่าบัญชีของคุณมีบทบาทใดบทบาทหนึ่งต่อไปนี้ในโปรเจ็กต์ที่มีอยู่

  • เจ้าของ (roles/owner)
  • ผู้แก้ไข (roles/editor)
  • ผู้ดูแลระบบการใช้งานบริการ (roles/serviceusage.serviceUsageAdmin)
  1. เปิดใช้ Merchant API: เปิดใช้ merchantapi.googleapis.com ในคลัง Google Cloud API หรือใช้คำสั่ง gcloud ดูวิธีการทีละขั้นตอนได้ที่หัวข้อกำหนดค่าการตรวจสอบสิทธิ์ API จาก Merchant Center
  2. ลงทะเบียนโปรเจ็กต์ Google Cloud กับ Merchant Center: ทำตามขั้นตอนในคู่มือลงทะเบียนเป็นนักพัฒนาซอฟต์แวร์เพื่อให้สิทธิ์คำขอจากโปรเจ็กต์ที่มีอยู่ และเรียกใช้เมธอด registerGcp เพื่อลิงก์โปรเจ็กต์ Google Cloud ที่มีอยู่กับบัญชี Merchant Center หลัก คีย์บัญชีบริการที่มีอยู่และส่วนขยาย Content API for Shopping ที่ได้รับอนุมัติจะยังคงทำงานต่อไปโดยไม่มีการเปลี่ยนแปลง

ตัวเลือกที่ 2: ใช้โปรเจ็กต์ Google Cloud เดิมสำหรับ Content API for Shopping และโปรเจ็กต์ใหม่สำหรับ Merchant API

เลือกตัวเลือกนี้หากการผสานรวม Content API for Shopping เดิมทำงานอยู่แล้วด้วยข้อมูลเข้าสู่ระบบที่ถูกต้องและส่วนขยายที่ได้รับอนุมัติในโปรเจ็กต์ Google Cloud เก่า และคุณต้องการสร้างการผสานรวม Merchant API ใหม่ในโปรเจ็กต์ Google Cloud เฉพาะที่แยกต่างหาก โดยทำดังนี้

  1. คงการผสานรวม Content API for Shopping ไว้ในโปรเจ็กต์เก่า: ปล่อยให้เวิร์กโฟลว์และข้อมูลเข้าสู่ระบบของ Content API for Shopping ที่มีอยู่ทำงานในโปรเจ็กต์ Google Cloud เก่าต่อไป หากคำขอขยายเวลารหัสโปรเจ็กต์เก่าได้รับอนุมัติ การผสานรวม Content API for Shopping ปัจจุบันจะยังคงทำงานต่อไปจนถึงกำหนดเวลาที่ขยายออกไป
  2. สร้างโปรเจ็กต์ Google Cloud ใหม่สำหรับ Merchant API โดยเฉพาะ: สร้างโปรเจ็กต์ Google Cloud ใหม่ เปิดใช้ merchantapi.googleapis.com และสร้างข้อมูลเข้าสู่ระบบ (บัญชีบริการหรือรหัสไคลเอ็นต์ OAuth 2.0) สำหรับภาระงาน Merchant API ใหม่
  3. ลงทะเบียนโปรเจ็กต์ใหม่: ทำตามขั้นตอนในหัวข้อลงทะเบียนเป็นนักพัฒนาแอปเพื่อให้สิทธิ์คำขอจากโปรเจ็กต์ใหม่และเรียกใช้เมธอด registerGcp ด้วยอีเมลติดต่อของนักพัฒนาแอปที่ถูกต้อง อีเมลบัญชีบริการ (ลงท้ายด้วย .gserviceaccount.com) จะใช้เป็น developerEmail ไม่ได้
  4. ย้ายข้อมูลภาระงานทีละส่วน: ค่อยๆ เปลี่ยนการเรียก API จากโปรเจ็กต์ Content API for Shopping เดิมไปยังโปรเจ็กต์ Merchant API ใหม่ก่อนวันที่สิ้นสุดการใช้งานตามกำหนดการของ Content API for Shopping (หรือก่อนที่ส่วนขยายที่ได้รับอนุมัติจะหมดอายุ) และเลิกใช้โปรเจ็กต์เดิมเมื่อย้ายข้อมูลเสร็จสมบูรณ์

กรณีพิเศษ: สูญเสียสิทธิ์เข้าถึงโปรเจ็กต์ Google Cloud เก่าก่อนที่จะย้ายข้อมูลเสร็จสมบูรณ์

เนื่องจาก Content API for Shopping เลิกใช้งานแล้ว จึงไม่มีการแสดงในคลัง Google Cloud API อีกต่อไป และไม่สามารถเปิดใช้ในโปรเจ็กต์ Google Cloud ที่สร้างขึ้นใหม่ ด้วยเหตุนี้ คุณจึงไม่สามารถย้ายภาระงาน Content API for Shopping ที่มีอยู่ไปยังโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google Cloud ใหม่ด้วยตนเอง

หากคุณไม่สามารถเรียกใช้ Content API for Shopping จากโปรเจ็กต์เก่าได้อีกต่อไป (เช่น เนื่องจากข้อมูลเข้าสู่ระบบถูกเพิกถอนหรือสิทธิ์เข้าถึงโปรเจ็กต์กู้คืนไม่ได้) ให้ทำดังนี้

  1. ติดต่อทีมสนับสนุนของ Google Cloud เพื่อกู้คืนสิทธิ์เข้าถึงโปรเจ็กต์ Google Cloud ที่มีอยู่ (ตัวเลือกที่ 1) หรือ
  2. ทำตามตัวเลือกที่ 2 เพื่อสร้างและจดทะเบียนโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ใหม่ แล้วย้ายข้อมูลเวิร์กโฟลว์ที่ได้รับผลกระทบไปยัง Merchant API โดยตรง หากพบปัญหาสำคัญที่ทำให้ย้ายข้อมูลไม่ได้ โปรดติดต่อทีมสนับสนุน Merchant API

ขั้นตอนถัดไป