# Setup Google OAuth - Panduan Lengkap

## Error: redirect_uri_mismatch

Error ini terjadi karena **Redirect URI** yang dikonfigurasi di Google Cloud Console tidak sesuai dengan yang digunakan aplikasi.

---

## 🔧 Solusi Step-by-Step

### **Step 1: Konfigurasi di Google Cloud Console**

1. **Buka Google Cloud Console:**
   - URL: https://console.cloud.google.com/apis/credentials
   - Login dengan akun Google yang membuat OAuth Client

2. **Pilih OAuth 2.0 Client ID:**
   - Cari Client ID: `657584587617-6t62s46tflsdivfh16ruk2d9lcsebkc4.apps.googleusercontent.com`
   - Klik untuk edit

3. **Tambahkan Authorized Redirect URIs:**
   
   **Untuk Production (dengan SSL - RECOMMENDED):**
   ```
   https://matematikanusantara.id/auth/google/callback
   ```
   
   **Untuk Production (tanpa SSL - sementara):**
   ```
   http://matematikanusantara.id/auth/google/callback
   ```
   
   **Untuk Local Development:**
   ```
   http://localhost:8000/auth/google/callback
   http://127.0.0.1:8000/auth/google/callback
   http://10.10.115.108:8000/auth/google/callback
   ```

4. **Save dan Tunggu:**
   - Klik tombol "SAVE"
   - Tunggu 5-10 menit untuk perubahan aktif
   - Google memerlukan waktu untuk propagasi

---

### **Step 2: Update .env di Hosting**

SSH ke hosting dan edit file `.env`:

```bash
cd /path/to/MN
nano .env
```

Tambahkan/update baris berikut:

```env
# Google OAuth Configuration
GOOGLE_CLIENT_ID=657584587617-6t62s46tflsdivfh16ruk2d9lcsebkc4.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=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

# Dengan SSL (HTTPS):
GOOGLE_REDIRECT_URI=https://matematikanusantara.id/auth/google/callback

# Tanpa SSL (HTTP) - gunakan ini jika belum install SSL:
# GOOGLE_REDIRECT_URI=http://matematikanusantara.id/auth/google/callback
```

Save dengan: `Ctrl+O`, `Enter`, `Ctrl+X`

---

### **Step 3: Clear Cache di Hosting**

```bash
php artisan config:clear
php artisan cache:clear
php artisan route:clear
```

---

### **Step 4: Test Login Google**

1. Buka browser (gunakan Incognito/Private mode)
2. Akses: `https://matematikanusantara.id/login` atau `http://matematikanusantara.id/login`
3. Klik tombol "Login with Google"
4. Pilih akun Google
5. Seharusnya berhasil login tanpa error

---

## 🔍 Troubleshooting

### Error Masih Muncul?

#### 1. **Cek URL yang Digunakan:**
```bash
# Di hosting, jalankan:
php artisan tinker
>>> config('services.google.redirect')
```

Output harus sesuai dengan yang dikonfigurasi di Google Console.

#### 2. **Cek Authorized Redirect URIs di Google Console:**
- Pastikan **exact match** dengan URL callback
- Perhatikan `http` vs `https`
- Perhatikan trailing slash (jangan ada `/` di akhir)
- Format yang benar: `https://domain.com/auth/google/callback`

#### 3. **Tunggu Propagasi:**
Setelah update di Google Console, tunggu 5-10 menit sebelum test lagi.

#### 4. **Clear Browser Cache:**
```
Ctrl+Shift+Delete (Windows)
Cmd+Shift+Delete (Mac)
```
Pilih "Cookies and other site data" dan "Cached images and files"

#### 5. **Cek APP_URL di .env:**
```env
# Pastikan APP_URL sesuai dengan domain
APP_URL=https://matematikanusantara.id

# Atau jika belum SSL:
APP_URL=http://matematikanusantara.id
```

---

## 📋 Checklist

- [ ] Client ID dan Secret sudah benar di `.env` hosting
- [ ] Redirect URI sudah ditambahkan di Google Cloud Console
- [ ] Redirect URI di Google Console **exact match** dengan yang di aplikasi
- [ ] Sudah tunggu 5-10 menit setelah update Google Console
- [ ] Sudah clear cache aplikasi (`php artisan config:clear`)
- [ ] Sudah clear browser cache
- [ ] APP_URL di `.env` sudah sesuai dengan domain

---

## 🔒 Rekomendasi Keamanan

1. **Install SSL Certificate (Let's Encrypt - GRATIS)**
   - Lebih aman
   - Google lebih mempercayai HTTPS
   - SEO lebih baik

2. **Jangan Commit .env ke Git**
   - File `.env` sudah ada di `.gitignore`
   - Jangan pernah commit credentials

3. **Gunakan Environment Variables**
   - Simpan credentials di `.env` saja
   - Jangan hardcode di code

---

## 📞 Support

Jika masih error setelah mengikuti semua langkah:

1. Screenshot error lengkap
2. Screenshot Authorized Redirect URIs di Google Console
3. Output dari `php artisan tinker` → `config('services.google.redirect')`
4. Hubungi developer dengan info di atas
