2015-06-20 40 views
0

什麼是唯一標識Cordova中的用戶或用戶設備的侵入性最小的方式。我還沒有看iOS,但它看起來像ANDROID_IDdefinitely not unique,這排除了org.apache.cordova.device.Deviceuuid屬性。使用最少權限唯一標識Cordova中的用戶或設備

具體來說,這是爲了在電話或應用程序數據重置的情況下恢復遠程用戶帳戶數據,並且我試圖找出如何以最少的應用程序權限和用戶最小的認知負載來完成此操作。

目前,我想我唯一的途徑是:

  1. 要求用戶提供電子郵件
  2. 使用第三方身份驗證(OpenID的,Facebook,微博,微博等)
  3. 詢問用戶對於一個uname /密碼

回答

1

如果你的問題只是關於備份,我不知道有關Cordova/iOS,但Android有一個標準的備份服務,這應該適用於非谷歌固件(假設ROM製造商做了整合備份服務)

關於具有唯一的ID,我不認爲有任何明顯的答案,這取決於你的更精確的需求:

  • 根據你給的鏈接,非唯一ANDROID_ID錯誤僅適用於< = 2.2,與您的用例相關嗎? (編輯:雖然ANDROID_ID改變電話復位後,使不符合您的需要)
  • 詢問用戶的電子郵件意味着照顧的垃圾郵件
  • 用戶名/密碼的手段有適當的安全,不泄漏相關信息
  • 我個人的偏好是第三方authentificatino,但那麼你就需要用戶擁有一個谷歌賬戶/ Facebook的/ etc下,你可能不希望

此外,你可能想一個問題要考慮,Android設備越來越具有多用戶功能。你想識別一個設備或用戶? 如果以後,一個用戶可能有多個設備用於同一個應用程序。

+0

所有的優點。謝謝。我專注於便宜的市場,質量較低的手機在這些市場上占主導地位,因此供應商ID重用問題與我有關 - 儘管目前還不確定這是否是一個問題。我目前的偏好是要求提供一個電子郵件地址(用「bcrypt」或當前最慢的散列算法存儲),但可以回溯到各種第三方認證器。同樣,如果用戶願意,我可能會允許用戶在沒有安全網的情況下進行遊戲(最糟糕的情況是我的服務器上會有一些孤立的數據)。但我希望有一個更容易的標準,我可以堅持科爾多瓦。我們會看看是否有其他答案。 – Andrew

0

如果你想識別一個用戶,那麼你必須使用任何你需要權限的路由,所以這取決於你選擇哪一個。

對於識別設備,最好的選擇是將IMEI用於手機,對於沒有IMEI(平板電腦,媒體播放器)的設備使用Build.SERIAL,則必須創建一個插件以獲取這些值

+0

非常感謝您的回覆。我不認爲我的問題中的任何選項都需要任何特殊權限 - 它們隨網絡訪問一起提供,無論如何我都需要這些權限。但是使用IMEI會帶來很大的問題:首先,我認爲它需要Android中的READ_PHONE_STATE,我認爲它是清單中侵入性最強的許可。其次,最後我檢查了一下,它只能通過iOS上的私人方法訪問,所以它永遠不會被Apple批准。最重要的是,它確定了一個獨特的設備,而不是一個用戶。如果用戶出售他的手機,那麼我會泄漏他或她的數據。 – Andrew

+0

你說你想識別一個用戶或一個設備,用戶可以用一個用戶帳戶來識別,該設備可以通過IMEI或Build.SERIAL「唯一」識別。但是,如果您根本不需要識別設備,則必須使用兩者的組合,或者僅使用用戶帳戶。在iOS上,您應該使用供應商的標識符而不是IMEI – jcesarmobile

+0

我很抱歉我的問題遇到了這種情況,但我特別詢問了一種識別「用戶或用戶設備」而不是「用戶或設備」的方法。我很抱歉沒有把這個更清楚。我所希望的是透明的,像用戶的Google身份或類似的東西。我記得幾年前讀過一種方法,可以從特定的應用程序供應商獲取所有應用程序中每位用戶的GUID,但也許這只是一項功能請求。那將是我理想的解決方案。但是,由於隱私問題,IMEI對我來說是不利的。 – Andrew