OAuth 2.0 state使用
===
---
> [color=#009dc4]
> ## 前言
>
> 照理說應該要先從OAuth開始講解,但那實在是要寫的跟要整理的實在太多,
> 所以先從最近有用到的一些小技巧開始講解,後面再慢慢補前面的(挖坑中....)
---
> [color=#ff0000]
> ## 情境
>
> 目前遇到比較常用到OAuth裡的state,都是自己的服務去介接別人的服務,並且需要帶一些會用到的參數來做到更漂亮的情境時,比較常會使用state
>:::info
>例如:
>A站為別人的主站
>B站為自己的主站
>當B站去介接A站的OAuth並且當使用者從A站=>A站OAuth=>B站,B站會針對A站目前會員的條件(例如身份、等級之類的),跳過一些步驟或呈現不同的畫面
>
>:::
>通常不介接OAuth的話大部分應該都是待在網址傳過去,但現在多了一段OAuth的過程,相關參數要怎麼帶過去呢?這時候就會用到state這個參數
---
>[color=green]
>## 解決方案
>網路上很多範例跟教學,state通常都只有一個參數,但在實際開放的情境上,往往所需的參數不只一個....但轉個念想其實很簡單解決
>
>關鍵語法:
>````javascript
>JSON.stringify(); // 保險一點的話需要encodeURIComponent包起來,要不然有機會爆掉...
>JSON.parse();
>````
>
>對,其實就只要請A站把你所需的資料包成JSON字串丟到state給B站解析就可以。
---
>[color=#90F1EF]
> ## 結論
> 聽起來很簡單,但實際做專案的時候,遇到蠻多合作夥伴,所以才想記錄下來。
{"metaMigratedAt":"2023-06-16T05:46:09.391Z","metaMigratedFrom":"YAML","title":"OAuth 2.0 state使用","breaks":true,"contributors":"[{\"id\":\"4242844b-b5b4-429d-9469-dd121c8d3e84\",\"add\":807,\"del\":28}]"}