gpt4 book ai didi

文件上传的iOS身份验证?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:46:33 28 4
gpt4 key购买 nike

我正在努力弄清楚如何使用我的 Box 身份验证 token 来使用 Box API。我已将身份验证流程构建到我的应用程序中,以便我可以将相关部分(访问 token 、刷新 token 等)保存到钥匙串(keychain)中。我遇到的问题是,每当我重新打开应用程序时,我似乎都找不到合适的方法来设置我的 BoxOAuth2Session 或任何重新使用保存的 token 将文件上传到 Box 的方法。目前,我正在使用我的 clientID 和密码重新创建 BoxOAuth2Session,并在该 session 上手动设置 accessToken、refreshToken 等值。我创建了一个 BoxFilesResourceManager,附加了这个 BoxOAuth2Session,并使用 uploadFileWithInputStream 上传了一个文件。此请求总是失败并返回 401。我能够将文件上传到 Box 的唯一方法是立即在登录步骤后使用 [BoxSDK sharedSDK].filesManager。重新创建 OAuth 状态以访问 API 的预期工作流程是什么?

最佳答案

BoxOAuth2Session 绑定(bind)到 SDK 实例。当您访问 [BoxSDK sharedSDK] 单例时,您使用的是一个 SDK 实例,该实例已经连接了它自己的 BoxOAuth2Session 和管理器实例。在正常使用中,我们建议使用 sharedSDK 单例,因此您应该操作附加到此 SDK 的 BoxOAuth2Session

执行此操作的一种方法是尝试从钥匙串(keychain)加载刷新 token 并设置 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 session 并在下次 API 调用时获取新的访问 token 和刷新 token ,只要刷新 token 未被撤销且未过期。您不妨manually trigger a heartbeat call to force a refresh .

我们已经放在一起 a sample app that demonstrates how to store and load refresh tokens using the keychain .

附带说明一下,我们不建议将访问 token 存储在设备上,因为此 token 是不记名 token ;丢失此 token 可能会让 Mallory 冒充您应用的用户。

关于文件上传的iOS身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17056554/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com