我正在向 iPad 应用程序添加 Box 支持。我尝试了官方的SDK,但我不想使用它,原因如下:
UIModalPresentationFormSheet
登录页面对于iPad 上具有样式的模态控制器来说太宽了。加载https://m.box.net/api/1.0/auth/UIWebView
内容的 SDK 托管,它可能返回最小宽度设置为 768px 的 HTML(尽管我没有检查 HTML,在这里推测)。登录页面中的 HTML 不显示 Google Apps 身份验证选项。该页面的完整桌面版本可以。
由于登录页面托管在
UIWebView
用户中,因此无法确定他将凭据提供给 Box,而不是应用程序作者。我不需要整个 SDK 功能,只需要身份验证、文件夹/文件列表和内容下载。由于我的应用程序还使用其他云存储提供商,我更愿意提供统一的文件浏览体验。
这是我要做的:
为我的应用添加自定义 URL 方案,比如“myapp”。
在我的应用程序的 Box 应用程序设置中,将重定向 URL 设置为
myapp://RedirFromBoxAuth
.
当用户选择从我的应用程序中浏览 Box 时,我将:
打电话买票
GET https://www.box.com/api/1.0/rest?action=get_ticket&api_key={API_KEY}
提取票证,然后调用
openUrl
这https://www.box.com/api/1.0/auth/{TICKET}
将打开 Safari 并让用户输入他的凭据。这是登录页面的完整桌面版本。成功登录后,Box 的服务器会告诉 Safari 重定向到
myapp://RedirFromBoxAuth?ticket={TICKET}&auth_token={TOKEN}
,这反过来又会告诉 iOS 将控制权交给我的应用程序。我的应用收到
handleOpenURL
通知,我可以提取身份验证令牌并从现在开始使用 REST API。
请评论,这是一个好计划吗?我创建了一个快速原型,它似乎可以工作,但也许我遗漏了什么?
Box 团队,您能否告诉我们使用此身份验证模型的应用程序是否有资格包含在 OneCloud 中?