我將Box支持添加到iPad應用程序中。我嘗試了官方SDK,我不想使用它,原因如下:在iPad上使用Box進行身份驗證
登錄頁面是與iPad上
UIModalPresentationFormSheet
風格模態控制器太寬。 SDK主機UIWebView
加載內容https://m.box.net/api/1.0/auth/,這可能會返回HTML最小寬度設置爲768px(儘管我沒有檢查HTML,在這裏推測)。HTML在登錄頁面不顯示谷歌Apps的身份驗證選項。該頁面的完整桌面版本的確如此。
由於登錄頁面託管在
UIWebView
中,用戶無法確定他是否將憑據提供給Box,而不是應用程序作者。我並不需要整個SDK的功能,只是驗證,文件夾/文件列表和內容下載。由於我的應用程序也使用其他雲存儲提供商,我寧願提供統一的文件瀏覽體驗。
這就是我要做的事情:
添加自定義URL方案,我的應用程序,讓我們說 「的myapp」。
在我的應用程序設置重定向URL來
myapp://RedirFromBoxAuth
Box的應用程序設置。
當用戶選擇從我的應用程序內瀏覽框,我要:通過調用GET https://www.box.com/api/1.0/rest?action=get_ticket&api_key={API_KEY}
提取ticket
買到票,然後調用
openUrl
與https://www.box.com/api/1.0/auth/{TICKET}
這將打開Safari並讓用戶輸入他的憑據。這是登錄頁面的完整桌面版本。成功登錄Box的服務器會告訴Safari重定向到
myapp://RedirFromBoxAuth?ticket={TICKET}&auth_token={TOKEN}
,這反過來會告訴iOS對我的應用程序產生控制權。我的應用程序接收
handleOpenURL
通知,我可以提取認證令牌和使用REST API從現在開始。
請評論,這是一個很好的計劃嗎?我創建了一個快速原型,它似乎工作,但也許我錯過了什麼?
箱隊,請你告訴我們將使用這種身份驗證模式的應用程序有資格列入OneCloud?