1

我正在向 iPad 应用程序添加 Box 支持。我尝试了官方的SDK,但我不想使用它,原因如下:

  1. UIModalPresentationFormSheet登录页面对于iPad 上具有样式的模态控制器来说太宽了。加载https://m.box.net/api/1.0/auth/UIWebView内容的 SDK 托管,它可能返回最小宽度设置为 768px 的 HTML(尽管我没有检查 HTML,在这里推测)。

  2. 登录页面中的 HTML 不显示 Google Apps 身份验证选项。该页面的完整桌面版本可以。

  3. 由于登录页面托管在UIWebView用户中,因此无法确定他将凭据提供给 Box,而不是应用程序作者。

  4. 我不需要整个 SDK 功能,只需要身份验证、文件夹/文件列表和内容下载。由于我的应用程序还使用其他云存储提供商,我更愿意提供统一的文件浏览体验。

这是我要做的:

  1. 为我的应用添加自定义 URL 方案,比如“myapp”。

  2. 在我的应用程序的 Box 应用程序设置中,将重定向 URL 设置为myapp://RedirFromBoxAuth.

当用户选择从我的应用程序中浏览 Box 时,我将:

  1. 打电话买票GET https://www.box.com/api/1.0/rest?action=get_ticket&api_key={API_KEY}

  2. 提取票证,然后调用openUrlhttps://www.box.com/api/1.0/auth/{TICKET}将打开 Safari 并让用户输入他的凭据。这是登录页面的完整桌面版本。

  3. 成功登录后,Box 的服务器会告诉 Safari 重定向到myapp://RedirFromBoxAuth?ticket={TICKET}&auth_token={TOKEN},这反过来又会告诉 iOS 将控制权交给我的应用程序。

  4. 我的应用收到handleOpenURL通知,我可以提取身份验证令牌并从现在开始使用 REST API。

请评论,这是一个好计划吗?我创建了一个快速原型,它似乎可以工作,但也许我遗漏了什么?

Box 团队,您能否告诉我们使用此身份验证模型的应用程序是否有资格包含在 OneCloud 中?

4

1 回答 1

1

这似乎是一个很好的策略,并且可能会比普通重定向提供更好的用户体验/更简单的实现。如果您通过这种方式实施遇到任何奇怪的边缘情况,请告诉我们。

于 2012-06-04T22:23:57.900 回答