# ตั้งค่า Google sign-in ให้ทีมเข้าหน้า admin ของ Easy CMS

> ทีละขั้นตอน: สร้าง OAuth client ใน Google Cloud, ใส่ callback URL, ตั้ง config ของ Easy CMS และเลือกว่าใครเข้าได้บ้าง ฟรีภายใต้ MIT

URL: https://easycms.dev/th/blog/google-sign-in-for-your-team  
Published: 2026-10-17  
Updated: 2026-10-29

ทุกคนในทีมมีบัญชี Google อยู่แล้ว ทำไมต้องจำรหัสผ่านอีกชุดสำหรับหน้า admin single sign-on ใน Easy CMS ฟรีภายใต้ MIT ไม่ต้องซื้อแพ็กเกจ enterprise เว็บที่คุณกำลังอ่านอยู่นี้ก็ใช้วิธีนี้

## 1. ติดตั้งและใส่ใน config

```sh
npm install @easy-cms/auth-oauth
```

```ts
import { google } from '@easy-cms/auth-oauth'

export default defineConfig({
  serverURL: 'https://cms.example.com',
  auth: {
    providers: [google()], // อ่าน GOOGLE_CLIENT_ID และ GOOGLE_CLIENT_SECRET
  },
  // …
})
```

`serverURL` ต้องมีบน production เพราะใช้สร้าง callback URL การเปิด single sign-on จะเพิ่มตาราง `user-identities` จึงต้องสร้าง migration ด้วย `npx easy-cms migrate:create sso` แล้ว commit ไฟล์ที่ได้

## 2. สร้าง OAuth client ใน Google Cloud

- ไปที่ Google Cloud console → APIs & Services → Credentials แล้วสร้าง **OAuth client ID** แบบ **Web application**
- ถ้าถูกถามให้ตั้ง consent screen: ทีมที่ใช้ Google Workspace เลือก **Internal** ถ้าไม่ใช่ให้เลือก **External** และระหว่างที่ยังอยู่ในสถานะ Testing ให้เพิ่มบัญชีของทุกคนที่จะเข้าใน **Test users**
- ใน **Authorized redirect URIs** ใส่ `https://cms.example.com/api/cms/auth/google/callback` และ `http://localhost:3000/api/cms/auth/google/callback` สำหรับตอนพัฒนา

หน้า ตั้งค่า → Single sign-on ในหน้า admin แสดง callback URL ที่ถูกต้องพร้อมปุ่มคัดลอก ใช้ตรงนั้นจะได้ไม่พิมพ์ผิด

## 3. ตั้งค่า environment

ใส่ `GOOGLE_CLIENT_ID` และ `GOOGLE_CLIENT_SECRET` ที่ได้จาก Google ในที่ที่คุณ deploy เช่น Environment Variables ของ Vercel อย่า commit ลง git และอย่าส่งต่อในแชต หลัง deploy หน้า login จะมีปุ่ม **เข้าสู่ระบบด้วย Google**

## 4. เลือกว่าใครเข้าได้

ค่าเริ่มต้นปลอดภัยที่สุด: เฉพาะคนที่มีบัญชีใน Easy CMS อยู่แล้ว เข้าสู่ระบบด้วยรหัสผ่านครั้งแรกแล้วกด **เชื่อม Google** ที่หน้าบัญชีของตัวเอง อีเมลที่ไม่รู้จักจะเข้าไม่ได้

ถ้าทีมใช้ Google Workspace มีทางลัดสองแบบ:

- `google({ linkByEmail: true })` จับคู่บัญชีด้วยอีเมลที่ Google ยืนยันแล้ว ไม่ต้องกดเชื่อมเอง
- `providerSignUp: { domains: ['example.com'], role: 'editor' }` ให้คนในโดเมนของคุณได้บัญชีตอนเข้าครั้งแรก (บทบาทนี้ตั้งเป็น admin ไม่ได้)

ใช้ `google({ hd: 'example.com' })` ร่วมด้วย เพื่อให้หน้าเลือกบัญชีของ Google แสดงเฉพาะบัญชีในโดเมนของคุณ

## 5. ปิดรหัสผ่าน (ถ้าต้องการ)

```ts
auth: { providers: [google()], password: false },
```

ทุกคนจะต้องเข้าด้วย Google ยกเว้น admin ที่ยังใช้รหัสผ่านได้ ไว้เป็นทางเข้าสำรองตอน Google มีปัญหา

## ต่อจากนี้

รวม single sign-on กับ [บทบาทและสิทธิ์ระดับ field](/th/docs/roles) และ [audit log](/th/docs/audit-log) แล้ว ทีมจะรู้ว่าใครแก้อะไรเมื่อไร รายละเอียดทั้งหมด รวมถึง Microsoft, GitHub และ OpenID Connect อยู่ที่ [คู่มือ Single sign-on](/th/docs/sso)
