2017-05-24 64 views
1

我做了電子郵件的base64 utf-8編碼。 因爲它是一個數據庫密鑰。 但是,出現以下問題。 我需要幫助。android firebase數據庫路徑中的令牌無效

的setValue在/用戶/ aW1hZ2VfNTk1NkBuYXZlci5jb20 = 失敗:DatabaseError:無效令牌路徑

databaseReference.child("user").child(util.getBase64encode(email)).setValue(userModel) 

幫我...

+0

記錄base64加密電子郵件,並檢查數據庫中是否相同 –

+0

適用於我:http://jsbin.com/nemakev/edit?js,console其中寫道https://stackoverflow.firebaseio.com/44160089 .json –

+1

Firebase令牌中不允許使用斜槓字符/。許多Base64編碼使用'/'。您是否使用不產生/的Base64編碼器。例如,[使用此選項](https://developer.android.com/reference/android/util/Base64.html#URL_SAFE)。 –

回答

0

在我的情況下,編碼字符串是有一個新行最後。使用Base64.NO_WRAP作爲@Arvin在這answer作爲解決方案。我的編碼功能現在看起來像:

public static String encodeToBase64(String strToEncode) { 
    byte[] data = null; 
    try { 
     data = strToEncode.getBytes("UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
    return Base64.encodeToString(data, Base64.NO_WRAP); 
} 

如果你的目標是安全的像什麼@BobSnyder在評論上面提到的,你仍然可以使用URL_SAFE,只是修剪字符串,以確保公正。