- 上一篇的連結如下
- 下一篇的連結如下
Nuget Package 安裝
- Microsoft.Graph
dotnet add package Microsoft.Graph --version 5.44.0
- Microsoft.Identity.Client
dotnet add package Microsoft.Identity.Client --version 4.59.0
新增檔案
這邊準備
- appsettings.json : 將前一篇申請到的 ClientId & ClientSecret 替換進檔案中。
- AppSettings.cs
- OneDriveController.cs
- OneDriveService.cs
- Program.cs
我的 DI 使用 Autofac 來做,若各位有其他習慣的方法都一樣可以。
Microsoft OAuth 用戶端取得授權流程
1. 取得 OAuth URI
第一步,將 Microsoft OAuth URI 進行組合,將必要的資訊都帶進去,包含 ClientId、Scopes,Redirect URI和 state 字串(有需要的話)。
可以把這個連結貼到瀏覽器上試試看能不能正常運行。
2. 新增 API 接收 Microsoft 回傳的 Authorization Code 並轉為 Access Token
在 Controller 新增一支 API,這個 api path 就是上一篇設定的 Redirect URI,還沒設定好的人記得去補上設定。
Microsoft 會把 code 放在 query parameter 中帶進來,若有 state 字串也會一起進來,拿到 code 後就是要把它轉成真正可用的 Access Token。
加好了之後,再用 Auth URI 測試一次,看所有流程跑完成不能正常取回 Access Token。
有看到這些回傳內容就沒問題了。
4. 使用 Refresh Token 來更新過期的 Access Token
Micosoft OAuth 用戶端更新 Access Token 不需要舊的 access token,只需要 對應的 refresh token 即可。
5. [補充]Decode Id Token
Id Token 本身是 JWT (JSON Web Token),所以可以直接 照著 Decode JWT 的方式取得其中資訊。
//使用方法 : 帶入 Id Token & 欲取得欄位名稱
var email = GoogleService.DecodeIdToken(idToken, "email");