คู่มือ

เชื่อมต่อบัญชี App Store และ Google Play ของคุณ

TL;DR. เพื่อให้ Mokbi เผยแพร่แทนคุณ คุณเชื่อมต่อสองอย่างเพียงครั้งเดียว: service account key ของ Google Cloud (ไฟล์ JSON) สำหรับ Google Play และ API key ของ App Store Connect (ไฟล์ .p8 พร้อม Key ID และ Issuer ID) สำหรับ Apple ตัวคีย์เป็นส่วนที่ง่าย ขั้นตอนที่ทำให้เกือบทุกคนสะดุดคือการให้สิทธิ์การเข้าถึงในตำแหน่งที่ถูกต้อง เพราะ Google Cloud IAM และ Play Console เป็นระบบสิทธิ์การเข้าถึงสองระบบที่แยกจากกัน คู่มือนี้จะพาคุณผ่านการตั้งค่าทั้งสองแบบตั้งแต่ต้นจนจบ พร้อมวิธีแก้ไขที่ตรงจุดสำหรับข้อผิดพลาดที่พบบ่อย

สิ่งที่คุณต้องเตรียม

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

  • Google Play: service account key ของ Google Cloud ที่ดาวน์โหลดเป็นไฟล์ JSON จากโปรเจกต์ที่เปิดใช้งาน Google Play Android Developer API แล้ว พร้อมกับเชิญ service account นั้นเข้าสู่ Play Console ของคุณ
  • App Store Connect: API key ที่ดาวน์โหลดเป็นไฟล์ .p8 พร้อมกับ Key ID และ Issuer ID ของทีมคุณ

คุณทำแบบนี้แค่ครั้งเดียวต่อร้านค้า หลังจากนั้นการเผยแพร่และเผยแพร่ซ้ำจะเหลือแค่คลิกเดียว เริ่มจาก Google ก่อน เพราะมีขั้นตอนย่อยเยอะกว่า

Google Play ส่วนที่ 1: สร้าง service account key

ขั้นตอนนี้ทำใน Google Cloud Console (console.cloud.google.com)

  1. สร้างหรือเลือกโปรเจกต์ เช่น "Mokbi Publisher"
  2. ไปที่ APIs & Services → Library ค้นหา Google Play Android Developer API แล้วคลิก Enable
  3. ไปที่ APIs & Services → Credentials → Create credentials → Service account ตั้งชื่อเช่น mokbi-play-publisher ส่วนบทบาทของโปรเจกต์ปล่อยว่างไว้ได้ เพราะสิทธิ์การเข้าถึงจริงมาจาก Play Console ในส่วนที่ 2
  4. เปิด service account นั้น ไปที่แท็บ Keys จากนั้น Add key → Create new key → JSON แล้วดาวน์โหลดไฟล์มา ไฟล์ JSON นี้คือสิ่งที่คุณจะนำไปวางใน Mokbi ส่วน client_email ข้างในไฟล์ (ที่ลงท้ายด้วย .iam.gserviceaccount.com) คือที่อยู่ที่คุณจะเชิญในขั้นตอนถัดไป เก็บไว้ให้พร้อมใช้งาน

เจอข้อความ "Service account key creation is disabled" ไหม? นั่นคือ organization policy ของ Google ที่ชื่อ iam.disableServiceAccountKeyCreation ซึ่งเปิดใช้งานอยู่โดยค่าเริ่มต้นภายใต้ "Secure by Default" ปิดมันสำหรับโปรเจกต์นี้ได้ที่ IAM & Admin → Organization Policies ค้นหา Disable service account key creation เลือก Manage policy เลือก "Override parent's policy" ตั้งค่า Enforcement: Off ให้ครอบคลุมเฉพาะโปรเจกต์นี้ แล้วกด Save รอสักสองสามนาทีแล้วลองสร้างคีย์อีกครั้ง คุณต้องมีบทบาท Organization Policy Administrator ซึ่งเจ้าของบัญชีองค์กรมีอยู่แล้ว หรือสามารถมอบสิทธิ์นี้ให้คุณได้

Google Play ส่วนที่ 2: ให้สิทธิ์การเข้าถึงใน Play Console

ขั้นตอนนี้คือจุดที่ทำให้หลายคนเสียเวลาไปหลายชั่วโมง อ่านให้ละเอียด สิทธิ์การเข้าถึงแอปของคุณจะให้ได้เฉพาะใน Google Play Console (play.google.com/console) เท่านั้น ไม่ใช่ใน Google Cloud IAM มีสองจุดที่ต้องตรวจสอบ

  1. Setup → API access: ตรวจสอบให้แน่ใจว่าโปรเจกต์ Google Cloud ที่มี service account ของคุณถูกเชื่อมโยงไว้ที่นี่แล้ว ถ้ายังไม่ได้เชื่อมโยง คีย์จะยืนยันตัวตนได้ แต่จะได้ 403 ในทุกแอป
  2. Users and permissions (ด้านล่างสุดของคอลัมน์ซ้าย ระดับบัญชี): เลือก Invite new users วางอีเมลของ service account (อีเมลที่ลงท้ายด้วย .iam.gserviceaccount.com) จากนั้นในส่วน App permissions เพิ่มแอปของคุณและให้สิทธิ์อย่างน้อย Manage store presence สิทธิ์ระดับแอปเดียวนี้เพียงพอสำหรับเผยแพร่ข้อความหน้าร้านค้าและภาพหน้าจอ คุณไม่จำเป็นต้องมี Admin ระดับบัญชี

แอปของคุณต้องมีอยู่ใน Play Console อยู่แล้ว API หน้าร้านค้าจะแก้ไข package ที่มีอยู่ ไม่ได้สร้างแอปใหม่ และยังไม่ต้องอัปโหลด APK หรือ AAB ตรวจสอบให้แน่ใจว่า package name ที่คุณกรอกใน Mokbi ตรงกับแอปทุกตัวอักษร

จุดที่คนพลาดกันมากที่สุด: Cloud IAM ไม่ใช่ Play Console

ถ้าคุณเจอ PERMISSION_DENIED ซ้ำๆ นี่เกือบทุกครั้งคือสาเหตุ Google Cloud IAM (หน้า IAM & Admin → IAM ใน Cloud Console ที่คุณกำหนด "roles" ให้กับ service account) ควบคุมสิทธิ์การเข้าถึงทรัพยากรของ Google Cloud แต่ไม่มีผลอะไรเลยต่อสิทธิ์การเข้าถึงหน้าร้านค้าของแอปคุณ การกำหนด roles ที่นั่นจะไม่มีวันแก้ปัญหาสิทธิ์การเข้าถึงร้านค้าได้

สิทธิ์การเข้าถึงแอปทั้งหมดอยู่ใน Play Console เท่านั้น ในสองจุดที่กล่าวไปข้างต้น: การเชื่อมโยง API access และการเชิญใน Users and permissions ตั้งค่าทั้งสองจุดนี้ แล้วคีย์ตัวเดิมที่เคยได้ 403 จะเริ่มทำงาน

Apple: สร้าง App Store Connect API key

ขั้นตอนนี้ทำใน App Store Connect (appstoreconnect.apple.com) Mokbi ต้องการสามอย่าง: เนื้อหาไฟล์ .p8, Key ID และ Issuer ID

  1. ไปที่ Users and Access → Integrations → App Store Connect API ส่วนนี้มองเห็นได้เฉพาะ Account Holder หรือ Admin ของทีมคุณ ถ้าระบบถาม ให้อนุญาต team keys
  2. คลิก Generate API Key ตั้งชื่อ (เช่น "Mokbi Publisher") แล้วกำหนดบทบาท App Manager ให้
  3. ดาวน์โหลดไฟล์ .p8 คุณดาวน์โหลดได้ครั้งเดียวเท่านั้น จึงควรเก็บไว้ในที่ปลอดภัย จดบันทึก Key ID ที่แสดงข้างคีย์ และ Issuer ID ซึ่งเป็น UUID ที่อยู่ด้านบนของหน้า Keys

เช่นเดียวกับ Google แอปต้องมีอยู่ใน App Store Connect อยู่แล้ว API จะแก้ไขหน้าร้านค้าที่มีอยู่ และยังไม่ต้องอัปโหลด build การเผยแพร่ผ่าน Mokbi จะจัดเตรียมเวอร์ชันให้คุณและหยุดก่อนขั้นตอนส่งตรวจสอบ เพื่อให้คุณกด Submit เองใน App Store Connect เมื่อพร้อม

เชื่อมต่อใน Mokbi

เปิดโปรเจกต์ ไปที่ขั้นตอน เผยแพร่ แล้วใช้ปุ่มเชื่อมต่อ:

  • เชื่อมต่อ Google Play: วาง JSON ทั้งหมดของ service account แล้วกด ตรวจสอบและเชื่อมต่อ กรอก package name ของคุณและกด ทดสอบการเชื่อมต่อ ก่อนเผยแพร่
  • เชื่อมต่อ App Store Connect: เปิดไฟล์ .p8 ด้วยโปรแกรมแก้ไขข้อความแล้วคัดลอกเนื้อหาไปวาง เพิ่ม Key ID และ Issuer ID แล้วกด ตรวจสอบและเชื่อมต่อ

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

ปัญหาที่พบบ่อยและวิธีแก้ไข

"Service account key creation is disabled" — นโยบายขององค์กรกำลังบล็อกการสร้าง JSON key ปิด iam.disableServiceAccountKeyCreation สำหรับโปรเจกต์นี้ (ดู Google Play ส่วนที่ 1) รอสองนาทีแล้วลองใหม่

PERMISSION_DENIED หรือ 403 ในทุกแอป — ยังไม่ได้ตั้งค่าสิทธิ์การเข้าถึงใน Play Console ตรวจสอบว่าโปรเจกต์ Cloud ถูกเชื่อมโยงไว้ใต้ Setup → API access และอีเมลของ service account ถูกเชิญไว้ใต้ Users and permissions พร้อมสิทธิ์ Manage store presence บนแอปของคุณแล้ว บทบาทใน Cloud IAM ไม่มีผลกับเรื่องนี้

ยังล้มเหลวอยู่ทันทีหลังให้สิทธิ์ไปแล้ว — การเปลี่ยนสิทธิ์ต้องใช้เวลาสักครู่กว่าจะมีผลจริง ลองบันทึกสิทธิ์ซ้ำใน Play Console (เปิดขึ้นมาแล้วกด save อีกครั้ง) หรือรอสักพัก แล้วกด ทดสอบการเชื่อมต่อ อีกครั้ง วิธีทดสอบแบบเร็วเพื่อแยกปัญหาคือลองให้สิทธิ์ Admin ระดับบัญชีแก่ service account ชั่วคราว ถ้า dry run ผ่าน แสดงว่าความล้มเหลวก่อนหน้านี้เกิดจากปัญหาขอบเขตสิทธิ์ระดับแอปหรือการเชื่อมโยงโปรเจกต์

แอปผิด หรือไม่มีอะไรเกิดขึ้นเลย — package name ใน Mokbi ต้องตรงกับแอปใน Play Console ทุกตัวอักษร และแอปต้องมีอยู่แล้วในทั้งสองคอนโซล listing API แก้ไขแอปที่มีอยู่เท่านั้น ไม่เคยสร้างแอปใหม่

ทำไฟล์ .p8 หาย — Apple ให้ดาวน์โหลดได้แค่ครั้งเดียวเท่านั้น ถ้าไฟล์หายไปแล้ว ให้เพิกถอนคีย์นั้นใน App Store Connect แล้วสร้างคีย์ใหม่ขึ้นมา จากนั้นเชื่อมต่อใหม่ใน Mokbi

เชื่อมต่อร้านค้าของคุณ → ดูวิธีการเผยแพร่