我正在努力弄清楚如何使用我的Box認證令牌來使用Box API。我已將身份驗證流構建到我的應用程序中,以便將相關的部分(訪問令牌,刷新令牌等)保存到鑰匙串中。我遇到的問題是,無論何時我重新打開應用程序,我似乎都無法找到設置BoxOAuth2Session的適當方式,或者重新使用保存的令牌將文件上傳到Box的任何方法。目前,我正在用我的clientID和secret重新創建BoxOAuth2Session,並在該會話上手動設置accessToken,refreshToken等值。我創建一個BoxFilesResourceManager,附加這個BoxOAuth2Session,並用uploadFileWithInputStream上傳一個文件。此請求總是以401失敗。我使用[BoxSDK sharedSDK] .filesManager在登錄步驟之後,能夠將文件上傳到Box的唯一方法是立即。重新創建OAuth狀態以訪問API的預期工作流程是什麼?用於文件上傳的iOS驗證?
2
A
回答
4
A BoxOAuth2Session
綁定到SDK實例。當您訪問[BoxSDK sharedSDK]
單身人士時,您正在使用已與其自己的BoxOAuth2Session
和經理實例連接的SDK實例。在正常使用情況下,我們建議使用sharedSDK
單身人士,所以您應該操縱連接到此SDK的BoxOAuth2Session
。
一種方法是嘗試從鑰匙串加載刷新令牌並在OAuth2Session
上設置refreshToken
屬性。
[BoxSDK sharedSDK].OAuth2Session.clientID = @"YOUR_CLIENT_ID";
[BoxSDK sharedSDK].OAuth2Session.clientSecret = @"YOUR_CLIENT_SECRET";
// set up stored OAuth2 refresh token
self.keychain = [[KeychainItemWrapper alloc] initWithIdentifier:REFRESH_TOKEN_KEY accessGroup:nil];
id storedRefreshToken = [self.keychain objectForKey:(__bridge id)kSecValueData];
if (storedRefreshToken)
{
[BoxSDK sharedSDK].OAuth2Session.refreshToken = storedRefreshToken;
}
的SDK會自動刷新的OAuth2會議,並採集下一個API調用一個新的訪問令牌和刷新令牌,只要刷新令牌沒有被撤銷,並沒有過期。你不妨manually trigger a heartbeat call to force a refresh。
我們放在一起a sample app that demonstrates how to store and load refresh tokens using the keychain。我們不建議在設備上存儲訪問令牌,因爲這個令牌是一個不記名令牌;丟失此令牌可能會讓Mallory冒充您應用的用戶。
相關問題
- 1. 用於文件上傳的CakePHP驗證
- 2. 驗證上傳的文件
- 3. JQuery驗證文件上傳
- 4. 驗證文件上傳CakePHP
- 5. Laravel文件上傳驗證
- 6. 文件上傳驗證
- 7. ASP.NET文件上傳 - 驗證
- 8. PHP文件上傳驗證
- 9. 驗證excel文件上傳
- 10. ASP.NET文件上傳驗證
- 11. PHP上傳文件驗證
- 12. 驗證大文件上傳
- 13. MVC文件上傳驗證
- 14. 上傳文件驗證1
- 15. 文件上傳驗證xpages
- 16. jquery驗證引擎用於文件上傳驗證當我使用jasny引導文件上傳
- 17. 使用jQuery驗證插件進行文件上傳驗證
- 18. 多文件上傳「文件[]」 JavaScript驗證
- 19. 用於文件上傳的javascript表單驗證
- 20. 使用Django驗證上傳文件
- 21. 在使用時驗證文件上傳?
- 22. 使用javascript/jquery驗證文件上傳
- 23. 驗證上傳的文件擴展名
- 24. 驗證上傳的文件類型
- 25. 的Grails:驗證文件上傳
- 26. PHP中的文件上傳驗證
- 27. 驗證上傳的文件是圖像
- 28. CakePHP的文件上傳驗證器
- 29. 可選的文件上傳驗證
- 30. 上傳Excel中的Excel文件驗證
感謝您的澄清。但是,即使執行此操作(登錄,存儲刷新令牌),SDK在文件上傳過程中也會不斷報告以下錯誤。錯誤域= com.box.sdk.errordomain代碼= 20001「該操作不能完成。(com.box.sdk.errordomain錯誤20001.) – jimt
此錯誤代碼對應於涉及'NSStream恆定'BoxSDKOAuth2ErrorAccessTokenExpiredOperationCannotBeReenqueued'。操作上傳,下載和縮略圖操作)不能在刷新後自動重試,因爲這些流不能被複制。令牌將自動刷新,但在發佈BoxOAuth2SessionDidRefreshTokensNotification後,您必須再次發出上傳呼叫。 –
另外請注意,你將不得不每次令牌被刷新時間存儲新的刷新令牌,因爲刷新令牌,一次性使用。 –