我想明白了,儘管解決方案看起來有些尷尬。
基本上,如果有必要,您總是必須準備好創建另一個auth會話。你創建一個auth會話,看看它是否有效,如果不是,創建第二個真實的。您會測試該通過捕獲兩個事件:
boxClient.Auth.SessionAuthenticated += Auth_SessionAuthenticated;
boxClient.Auth.SessionInvalidated += Auth_SessionInvalidated;
對我來說,這似乎是愚蠢的 - 我跑我的應用程序次/天,所以我只想每次刷新我的令牌。所以我總是創建兩個:
var config = new BoxConfig(CLIENT_ID, CLIENT_SECRET, new Uri(RedirectURI));
// Prior to this code snippet, I grabbed my starter access & refresh tokens from where I stored them in our db.
var auth = new OAuthSession(InitialToken, RefreshToken, 3600, "bearer");
var client = new BoxClient(config, auth);
/// Try to refresh the access token
var realAuth = await client.Auth.RefreshAccessTokenAsync(auth.AccessToken);
/// Create the client again
var realClient = new BoxClient(config, realAuth);
//going to just log/update tokens every time. This only runs 1x/day, so should be no harm.
LogNewTokens(realAuth.AccessToken, realAuth.RefreshToken);
然後我使用「realClient」作爲剩餘的Box請求。
回想起來,我可能會更快地解除代碼,將這些請求直接發佈到Box並解析返回的JSON。我希望有一個很好的包裝對象,可以自動爲我更新我的令牌,連接並使新的包容易獲得。我認爲他們可以在C#SDK上做得更好。
這就是你的編程技能踢在哪裏..如果沒有API沒有擴展方法或附加的給我,這是看起來你會編寫自己的邏輯或類來處理這樣的事情..在我看來... – MethodMan
我問我是否缺少API的一部分 - 我需要監聽的事件,更改的返回屬性等。顯然,我無法存儲我的用戶名和密碼以傳遞給Box未受監控應用的登錄網頁。 – Quicksilver
如果該應用程序是一個控制檯應用程序..你可以在App.Config文件中存儲用戶名和密碼,並讓該部分加密你試過 – MethodMan