OAuth 2.0 server-side flow獨立於其在YouTube API中的實現,將在資源所有者(= channel owner = you,在這種情況下)進行適當的身份驗證和授權後返回兩個令牌。這兩個令牌:
- 的訪問令牌。它用於查詢API並執行操作(例如上傳視頻)。訪問令牌隨着時間的推移過期。
- A 刷新令牌。它只用於在舊的令牌過期時獲得新的令牌。刷新令牌不能用於查詢API。
只要服務器應用程序至少跟蹤刷新令牌(因爲它可以隨時獲得新的令牌),它就能夠查詢API,而不需要連續授權資源所有者(直到資源所有者手動撤銷應用程序對資源的訪問權限)。
此時,擁有有效訪問令牌的任何人都可以代表資源所有者(在他已經許可的範圍內)執行操作。如果您希望用戶能夠從自己的計算機上直接上傳到您的頻道,理論上可以爲他們提供訪問權限和刷新令牌。但是,此過程有一些缺點:
- API無法區分你和他們。如果你可以做任何事情,他們也可以做。他們所做的一切都是你的責任。這是令牌被認爲是祕密的主要原因。
- 每個應用程序在任何時候只有一個有效的訪問令牌。如果一個客戶端使用刷新令牌,所有其他客戶端將發現自己被鎖定,並且必須再次使用刷新令牌,從而再次鎖定所有其他客戶端等等。這意味着操作一次只能由一個用戶執行。
該解決方案是實施您自己的身份驗證機制,以防止訪問您的應用程序,從而訪問您的頻道。我沒有使用YouTube Data API v3上傳視頻的經驗,因此我唯一能想到的方式是用戶將視頻上傳到您的服務器,然後將其轉發到YouTube的上傳服務器。這當然意味着所有的流量都通過應用服務器進行路由,這顯然不是完美的。但這是另一個問題的另一個問題。