OAuth App Homepage / brand disclosure
AllenChang's Creative
AllenChang's Creative 是 Allen Chang 開發與發行之應用程式的共用開發者品牌與 Google OAuth 授權身分。旗下目前公開產品為 Dwello 寓、1214 / Play Test Co-op 與 EPUB Tools,其中 Dwello 與 1214 已驗證請求 Google OAuth 授權;EPUB Tools 目前沒有要求 Google OAuth 授權。
同意畫面上的應用程式名稱與開發者品牌統一為 AllenChang's Creative;旗下產品各自擁有獨立的 OAuth Web Client,但都隸屬同一個 Google Cloud Project。
01 / Brand identity
這個名稱,就是同意畫面上的名稱。
AllenChang's Creative 是出現在 Google OAuth 同意畫面上的應用程式名稱與開發者品牌名稱;旗下產品的 OAuth 申請都以此名稱提交。
- OAuth 同意畫面上的應用程式名稱
- AllenChang's Creative
- OAuth 同意畫面上的開發者品牌
- AllenChang's Creative
- Google Cloud Project
- 單一共用 Google Cloud Project,下轄 Dwello 與 1214 兩個 OAuth Web Client;旗下產品各自擁有獨立的 OAuth Web Client 與 Authorized JavaScript Origin / Redirect URI。
02 / Applications under the brand
共用一個開發者品牌,三個各自獨立的產品。
同一個 AllenChang's Creative 對應出三個獨立產品;OAuth 同意畫面上的應用程式名稱不變,但每個產品是否實際要求使用者授權,由各自的程式碼證據決定。
- Developer / Publisher Brand AllenChang's Creative
- Applications under the brand Dwello 寓 · 1214 / Play Test Co-op · EPUB Tools
- Applications currently using Google OAuth Dwello 寓(openid · email · profile · drive.file) · 1214 / Play Test Co-op(openid · email · profile)
- Applications not currently requesting Google OAuth authorization EPUB Tools(瀏覽器記憶體處理 EPUB,無 OAuth 程式碼、Client 或 Cloud 配置)
03 / Requested scopes by product
每個產品的範圍各自精確列出。
以下範圍都來自各自產品的 tracked source;不同產品的範圍不得互相延伸,沒有使用的範圍不會被列出。
Dwello 寓
由前端 google.accounts.oauth2.initTokenClient 一次性請求四個範圍。
| 範圍(OAuth scope) | 用途 | 實際資料行為 |
|---|---|---|
| openid | 身份層級 | 取得 Google 簽署的 ID token,用於驗證目前登入者為 Google 帳號本人;Dwello 後端驗證 sub、iat 與 exp 等標準宣告。 |
| 已驗證電子郵件 | 取得使用者的 email 與 email_verified 宣告;Dwello 後端要求 email_verified 為 true 才會建立或更新使用者資料。 | |
| profile | 顯示名稱與頭像 | 取得使用者 Google 帳號的 name 與 picture 宣告,僅作為產品介面中的顯示名稱與頭像使用,不做為外部行銷或分析。 |
| https://www.googleapis.com/auth/drive.file | 受限制的雲端硬碟權限 | 只允許 Dwello 在使用者的 Google Drive 建立與管理 Dwello 自己產生的資料夾與檔案;不可列舉、讀取或修改其他檔案。 |
Dwello 後端不會額外向 Google 要求 Drive 範圍;drive.file 僅用於瀏覽器直接送往使用者自己 Google Drive 的照片流程。
1214 / Play Test Co-op
由 Cloudflare Worker 在 /api/auth/google 端點產生 Google
OAuth authorization-code 流程,僅請求以下三個範圍。
| 範圍(OAuth scope) | 用途 | 實際資料行為 |
|---|---|---|
| openid | 身份層級 | 取得 Google 簽署的 ID token;Worker 後端以 jose 驗證 RS256 簽章並比對 issuer 與 audience,確認目前登入者為 Google 帳號本人。 |
| 已驗證電子郵件 | 從 ID token 取得 email;D1 `users.google_id` 為 UNIQUE,後端以 Google `sub` 作為穩定識別鍵。 | |
| profile | 顯示名稱與頭像 | 從 ID token 取得 display_name 與 picture,作為 1214 介面中的顯示名稱與頭像;不作為對外行銷或分析。 |
1214 不請求 Drive、Photos、Calendar、Gmail、People API 或其他敏感範圍;CSP 也不白名單任何 googleapis.com 端點。
04 / drive.file boundary (Dwello only)
drive.file 不等於「整個雲端硬碟」。
在 Dwello 已驗證的範圍裡,drive.file 是受限範圍;它不會讓應用程式讀取、列舉或修改使用者 Google Drive 中的其他檔案。1214 不請求 Drive 範圍,因此這段只描述 Dwello。
- 僅限 Dwello 自己建立的資料夾與檔案。 Dwello 會在使用者 Drive 建立「Dwello / 專案名稱 / 分類」結構,只在這個結構裡新增與管理檔案。
- 不列舉、不讀取既有的其他檔案。 Dwello 不會讀取使用者的整個 Drive、不會列舉既有的檔案清單,也不會修改 Dwello 沒有建立的檔案。
- 不在伺服器保存照片或文件內容。 壓縮後的照片由瀏覽器直接送往使用者自己的 Google Drive;產品資料庫只保存 Drive 檔案識別碼。
- 不使用 Picker;無使用者選檔流程。 Dwello 沒有引入 Google Picker,使用者不需要把不相關的檔案交給應用程式。
- 使用者隨時可在自己的 Drive 改回私人或刪除。 應用程式預設把上傳的照片設為「知道連結的人可以檢視」以便分享 Dwello 紀錄頁;使用者可以隨時在 Google Drive 改回私人或刪除。
簡單地說:drive.file 只允許 Dwello 看到「Dwello 自己在你 Drive 寫過的東西」,不允許看到、修改或刪除其他檔案。
05 / Token and session handling
token 在記憶體;session 是第一方;資料庫只存雜湊。
Dwello 與 1214 各自以不同方式保留 OAuth 與登入狀態;共通原則是明文 token 不落地、session 可被撤銷、撤銷與刪除流程由使用者或管理員啟動。
- Dwello · Google Drive access token
-
只存在目前頁面的 JavaScript 模組變數;不寫入
localStorage、sessionStorage、IndexedDB、URL 或 log;登出時清除。 - Dwello · Session
-
第一方 HttpOnly cookie;正式環境同時帶
Secure與SameSite=Lax;瀏覽器腳本無法讀取。 - Dwello · 資料庫裡的 session
-
只保存 session token 的 SHA-256 雜湊與到期時間;撤銷以設定
revoked_at為準,cookie 同時過期。 - Dwello · 保留期限
- 絕對期限為七日,閒置逾三十分鐘視為過期;登出立刻撤銷。可透過 Google 帳號設定或 Dwello 站內登出撤銷授權。
- 1214 · ID token 與 Refresh token
- Worker 透過 jose 驗證 Google 簽發的 ID token(含 RS256 簽章、issuer、audience 驗證);不請求 refresh token、不儲存任何 Google access token 或 refresh token。
- 1214 · Session
-
HS256 JWT,payload 僅含
user_id,到期七日;KV 中以sessions:{token}=userId保存(TTL 604800);第一方 HttpOnly cookiesession帶SameSite=Lax。 - 1214 · 保留期限與刪除
-
Session 7 天;管理員通過
/admin/requests/:id/process申請可匿名化 google_id、email、display_name、avatar_url、role 並撤銷全部 session。
06 / User controls
使用者保留對授權、分享與檔案的主控權。
無論是 Dwello 的 Drive 照片或 1214 的測試協作帳號,使用者都可在 Google 帳號端與產品內調整授權與資料。
- Google 帳號端撤銷。 你可以在 Google 帳號設定 → 第三方應用程式存取中,隨時撤銷對 AllenChang's Creative 的授權。
- Dwello 站內登出。 Dwello 站內登出會清除目前頁面記憶體中的 Drive token、刪除第一方 session、並在資料庫把該 session 標記為撤銷。
- 1214 站內登出。
1214 站內登出會刪除 KV 中的 session 紀錄並清除
sessioncookie。 - Drive 檔案主控權(Dwello)。 你可以隨時在自己的 Google Drive 修改照片的分享權限、刪除檔案,或整個資料夾刪除;Dwello 資料庫只保留檔案識別碼,檔案本體仍在你的 Drive。
- 改回私人(Dwello)。 上傳時預設的「知道連結的人可以檢視」是為了 Dwello 紀錄頁分享用途,你可以隨時改回私人;改回後 Dwello 紀錄頁的圖片會無法載入。
- 聯絡方式。 任何與品牌或授權相關的問題可寄信至 wei.3dp@gmail.com,請不要在信件中附上密碼、token 或私人檔案內容。
07 / OAuth application status by product
目前要求 Google OAuth 授權的產品。
每個列出的產品都附上來源程式碼位置、實際 scope,以及對應的政策入口。
- Dwello 寓 把台灣屋主從看房、驗屋到設計、施工、入住的生命週期整理成一條可持續追蹤的紀錄。 openid、email、profile、drive.file 政策入口:Dwello 補充政策
- 1214 / Play Test Co-op 把 Google Play 獨立開發者與封閉測試參與者的 12 × 14 節奏整理成一條可理解的協作流程;不代表 Google 官方驗證。 openid、email、profile 政策入口:母品牌政策
目前未要求 Google OAuth 授權的產品
- EPUB Tools 在瀏覽器記憶體中檢查、修復、重新封裝 EPUB 容器的工具;目前沒有 Google OAuth 程式碼、Cloud 配置或 Client ID,僅在指南頁使用 Google AdSense 廣告(與 OAuth 無關)。 政策入口:EPUB Tools 補充政策
08 / Policies and entry points
對外公開的政策與產品入口。
以下連結是 AllenChang's Creative 對外公開、可被搜尋與驗證的政策頁與產品入口;目前共六個政策頁,本頁是品牌 OAuth 揭露頁,不屬於政策頁。
- 母品牌 Privacy Policy:/privacy/
- 母品牌 Terms of Service:/terms/
- Dwello 寓 Privacy Policy 補充:/apps/dwello/privacy/
- Dwello 寓 Terms of Service 補充:/apps/dwello/terms/
- EPUB Tools Privacy Policy 補充:/apps/epub-tools/privacy/
- EPUB Tools Terms of Service 補充:/apps/epub-tools/terms/
- Dwello 寓產品入口:/apps/dwello/
- 1214 / Play Test Co-op 產品入口:/apps/project-1214/
- EPUB Tools 產品入口:/apps/epub-tools/
- AllenChang's Creative 首頁:/
1214 與 EPUB Tools 在當前可驗證的來源中沒有請求 Drive 範圍;Dwello 是目前唯一被授權存取使用者 Drive 中「Dwello 自己建立」的資料夾與檔案之產品。EPUB Tools 列為「目前未要求 Google OAuth 授權」的產品,僅在指南頁使用 Google AdSense 廣告(與 OAuth 無關)。