เชื่อมต่อบัญชี App Store และ Google Play ของคุณ
สิ่งที่คุณต้องเตรียม
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)
- สร้างหรือเลือกโปรเจกต์ เช่น "Mokbi Publisher"
- ไปที่ APIs & Services → Library ค้นหา Google Play Android Developer API แล้วคลิก Enable
- ไปที่ APIs & Services → Credentials → Create credentials → Service account ตั้งชื่อเช่น
mokbi-play-publisherส่วนบทบาทของโปรเจกต์ปล่อยว่างไว้ได้ เพราะสิทธิ์การเข้าถึงจริงมาจาก Play Console ในส่วนที่ 2 - เปิด 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 มีสองจุดที่ต้องตรวจสอบ
- Setup → API access: ตรวจสอบให้แน่ใจว่าโปรเจกต์ Google Cloud ที่มี service account ของคุณถูกเชื่อมโยงไว้ที่นี่แล้ว ถ้ายังไม่ได้เชื่อมโยง คีย์จะยืนยันตัวตนได้ แต่จะได้ 403 ในทุกแอป
- 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
- ไปที่ Users and Access → Integrations → App Store Connect API ส่วนนี้มองเห็นได้เฉพาะ Account Holder หรือ Admin ของทีมคุณ ถ้าระบบถาม ให้อนุญาต team keys
- คลิก Generate API Key ตั้งชื่อ (เช่น "Mokbi Publisher") แล้วกำหนดบทบาท App Manager ให้
- ดาวน์โหลดไฟล์ .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