gpt4 book ai didi

ios - 如何在一个应用中授权多个 Dropbox 帐户?

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

我想更新我的一个应用程序(它是一个 Dropbox 客户端)以支持多个帐户,但我似乎找不到实现它的方法。

SDK我已经分析过很多次了,不管看多少次,貌似使用官方SDK的账号一次只能支持一个账号。虽然我确信它可以支持更多,因为我知道许多应用程序允许您链接多个。

任何关于这样做的指示将不胜感激。我什至找不到一种方法来获取 token 以便稍后单独存储它们。

最佳答案

我发现这是一个挑战,但经过大量实验后终于成功了。以下是一些应该有所帮助的信息:

一旦用户获得授权,每个 Dropbox (DB) 帐户都有一个与之关联的用户 ID (uid)。在您自己的应用程序帐户模型中,您需要跟踪 uid。最初,在用户链接他们的数据库帐户之前,此 uid 将为 nil

当用户想要访问他们的数据库帐户时,您将获得与该帐户关联的 uid。如果 uid 不是 nil,则按如下方式设置 DBRestClient:

_client = [[DBRestClient alloc] initWithSession:[DBSession sharedSession] userId:uid];

如果uid还没有设置,需要出示登录界面。

[[DBSession sharedSession] linkFromController:someController];

当然,这会启动 DB 应用程序以显示登录信息(如果未安装 DB 应用程序,则显示 Web 界面)。无论哪种方式,当用户完成授权过程时,您的应用程序将由 DB 再次启动。

在您的应用委托(delegate)的 application:openURL:sourceApplication:annotation: 方法中,您可以执行以下操作:

if ([[DBSession sharedSession] handleOpenURL:url]) {
NSString *query = url.query;
if ([[url absoluteString] rangeOfString:@"cancel"].location == NSNotFound) {
NSDictionary *urlData = [DBSession parseURLParams:query];
NSString *uid = [urlData objectForKey:@"uid"];
if ([[[DBSession sharedSession] userIds] containsObject:uid]) {
// At this point we know the login succeeded and we have the newly linked userid
// make a call to process the uid
}
} else {
// user cancelled the login
}
}

在处理新链接uid的代码中,可以将uid存储在自己的账户数据模型中。然后使用 uid 创建 DBRestClient,就像我之前展示的那样。

如果您有一个 uid,您可以通过简单的检查来确定该 uid 是否正确链接:

if ([[[DBSession sharedSession] userIds] containsObject:uid]) {
// the uid is linked
}

要根据用户的 uid 取消链接,您可以执行以下操作:

[[DBSession sharedSession] unlinkUserId:uid];

那时我也会从您自己的帐户模型中清除保存的 uid。

希望这足以拼砌拼图。祝你好运。

关于ios - 如何在一个应用中授权多个 Dropbox 帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304767/

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