項目 AlistGo/alist 由個人開發者轉由企業維護後,此前的回傳頁面
https://alist.nn.ci/tool/onedrive/callback已經無法正常使用,官網文檔也無法正常查看,加之大家對原先的驗證方式亦有隱私權的顧慮,故編寫了幾個簡單的頁面和一個使用教程。
本工具旨在協助用戶自行完成 OneDrive 授權,適用於 Alist 等第三方掛載場景,無需將敏感資訊交給他人。
-
登入 Azure 門戶
-
新增應用,取得
client_id(Application (client) ID) -
在「重定向 URI」新增您的 GitHub Pages 頁面地址,例如:
https://onedrive-licensing.moranxia.com/auth/callback或https://locolhost:3000/auth/callback平台選「Web」 -
選擇正確的應用程序類型:
- 重要:在「身份驗證」頁面,選擇平台類型為「Web」(推薦用於 Alist)
- 請勿選擇「單頁應用 (SPA)」,這會導致 Alist 無法使用相應的 token
- 重定向 URI 設定必須與授權頁面指定的一致
-
配置 API 權限:
- 進入「API 權限」頁面
- 點擊「添加權限」> 選「Microsoft Graph」>「委託的權限」
- 搜尋
Files,勾選所需權限(如 Files.ReadWrite.All) - 點擊「添加權限」保存
-
獲取 client_secret
- 在 Azure 入口左側選單點選「憑證與密碼」(Certificates & secrets)
- 點擊「新用戶端密碼」(New client secret)
- 輸入描述(可隨意填寫,例如:AList 掛載)
- 選擇過期時間(建議選擇 12 個月或 24 個月,過期後需重新生成)
- 點擊「新增」後,會在下方列表中看到剛剛產生的密碼,請務必複製並保存這一串值,之後將無法再次查看!
- 這個值就是
client_secret,稍後在本地 .env 或 Vercel 環境變數中填寫
分為本地運行和 Vercel 運行。
- 下載最新的穩定版(在 Releases 頁面)。
- 雙擊 exe,根據圖形界面提示輸入環境變數,點擊啟動即可。
- 點擊「打開本地服務」自動跳轉到 http://localhost:3000。
無需安裝 Node.js,無需命令行,適合所有 Windows 用戶。
基於 electron,理論上支持全平臺,但目前只編譯測試 Windows 版本。
-
安裝依賴(僅需一次):
npm install
-
啟動圖形化界面:
npm run electron
-
按照彈出的視窗提示,點擊「打開本地服務」即可自動跳轉到 http://localhost:3000
-
複製
.env.example為.env並填入您的配置:# Microsoft OAuth 設定 CLIENT_ID=your_client_id_here CLIENT_SECRET=your_client_secret_here REDIRECT_URI=http://localhost:3000/auth/callback PORT=3000 #可選 # REGION 可選值: global(預設)、cn、us REGION=global #可選
-
安裝依賴:
npm install
-
啟動服務:
npm start
-
在瀏覽器打開
http://localhost:3000
- 點擊上方按鈕,或直接將本儲存庫連結到 Vercel
- 在 Vercel 環境變數設定中添加:
CLIENT_IDCLIENT_SECRETREDIRECT_URI(必須是https://your-host/auth/callback)REGION#可選,可選值: global(預設)、cn、us
部署完成後,直接訪問您的 Vercel 應用程式網址,按照界面指引完成授權即可。
成功獲取授權後,您會得到以下資訊:
- Client ID: 您的 Microsoft 應用程式 ID
- Redirect URI: 您配置的重定向 URI
- Refresh Token: 用於獲取存取權限的重要令牌
在 AList 中添加 OneDrive 存儲時:
- 選擇存儲類型為 "OneDrive"
- 填入您的 Client ID、Client Secret
- 將 Redirect URI 設定為預設值或您自己的 URI
- 填入獲取到的 Refresh Token
- 使用純 Node.js HTTP 模組,無需任何 Web 框架
- 靜態 HTML/CSS/JavaScript 實現用戶界面
本工具僅獲取必要的 Microsoft 授權令牌,不存儲或傳輸您的任何個人資料。所有授權過程均在您的瀏覽器中進行,獲取的令牌僅顯示給您本人。
如遇其它技術問題,可在本項目 issue 區留言或提交討論。代碼都是 AI 寫的,出了問題可以給我留言但我也不一定有能力處理。歡迎改善本項目。
