Branch #10 docs/api/10-google-oauth.md

12. Google OAuth Hub

Branch #10 — Tập trung OAuth Google cho Calendar, Drive, Docs, Sheets theo mô hình hub.

Endpoints

GET
https://bizgpt.vn/wp-json/bizcity/v1/google/auth-url

Lấy URL cấp quyền

Auth: Bearer

GET
https://bizgpt.vn/wp-json/bizcity/v1/google/callback

OAuth callback

Auth: Public

GET
https://bizgpt.vn/wp-json/bizcity/v1/google/status

Trạng thái kết nối

Auth: Bearer

POST
https://bizgpt.vn/wp-json/bizcity/v1/google/disconnect

Ngắt kết nối

Auth: Bearer

Method Path Auth Mô tả
GET https://bizgpt.vn/wp-json/bizcity/v1/google/auth-url Bearer Lấy URL cấp quyền
GET https://bizgpt.vn/wp-json/bizcity/v1/google/callback Public OAuth callback
GET https://bizgpt.vn/wp-json/bizcity/v1/google/status Bearer Trạng thái kết nối
POST https://bizgpt.vn/wp-json/bizcity/v1/google/disconnect Bearer Ngắt kết nối

Query Examples

GET Lấy URL cấp quyền
curl -X GET "https://bizgpt.vn/wp-json/bizcity/v1/google/auth-url" -H "Authorization: Bearer biz-YOUR_KEY"
const res = await fetch('https://bizgpt.vn/wp-json/bizcity/v1/google/auth-url', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer biz-YOUR_KEY',
  },
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/bizcity/v1/google/auth-url"
headers = {'Authorization': 'Bearer biz-YOUR_KEY'}
res = requests.get(url, headers=headers)
print(res.json())
GET OAuth callback
curl -X GET "https://bizgpt.vn/wp-json/bizcity/v1/google/callback"
const res = await fetch('https://bizgpt.vn/wp-json/bizcity/v1/google/callback', {
  method: 'GET',
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/bizcity/v1/google/callback"
headers = {}
res = requests.get(url, headers=headers)
print(res.json())
GET Trạng thái kết nối
curl -X GET "https://bizgpt.vn/wp-json/bizcity/v1/google/status" -H "Authorization: Bearer biz-YOUR_KEY"
const res = await fetch('https://bizgpt.vn/wp-json/bizcity/v1/google/status', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer biz-YOUR_KEY',
  },
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/bizcity/v1/google/status"
headers = {'Authorization': 'Bearer biz-YOUR_KEY'}
res = requests.get(url, headers=headers)
print(res.json())
POST Ngắt kết nối
curl -X POST "https://bizgpt.vn/wp-json/bizcity/v1/google/disconnect" -H "Authorization: Bearer biz-YOUR_KEY" -H "Content-Type: application/json" -d '{"sample":true}'
const res = await fetch('https://bizgpt.vn/wp-json/bizcity/v1/google/disconnect', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer biz-YOUR_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"sample":true}),
});
const data = await res.json();
console.log(data);
import requests
url = "https://bizgpt.vn/wp-json/bizcity/v1/google/disconnect"
headers = {'Authorization': 'Bearer biz-YOUR_KEY', 'Content-Type': 'application/json'}
payload = '{"sample":true}'
res = requests.request("POST", url, headers=headers, data=payload)
print(res.json())

Use Cases

  • Đồng bộ lịch tác vụ với Google Calendar.
  • Xuất báo cáo tự động lên Google Sheets.
  • Lưu tài liệu đầu ra lên Google Drive.

Implementation Steps

  1. Sinh auth-url với return_url của client site.
  2. Nhận callback và lưu token tại hub.
  3. Client chỉ dùng token proxy, không giữ secret của provider.

Quick Start cURL

bash
curl -X GET "https://bizgpt.vn/wp-json/bizcity/v1/google/auth-url?return_url=https%3A%2F%2Fyour-site.com%2Foauth-callback" -H "Authorization: Bearer biz-YOUR_KEY"
Canonical Spec

docs/api/10-google-oauth.md