2011-08-15 22 views
12

Web servisimi ve uygulamayı (kişiler ve ajandaların standart eşitlemesi) senkronize etmek için android AccountManger modelini kullanmak isterim, ancak AccountManager sadece bir kullanıcı adı ve parola saklıyor gibi görünüyor. Web servisim üç kimlik bilgisi alır: kullanıcı adı, şifre ve hesap. Üçüncü bilgi parçasını saklamak için en iyi uygulama nedir? Hesap eklendiğinde o gerekiyordu Android'in belgelerineAndroid Hesap Yöneticisi'nde ek verileri saklayın

+0

Saçma bir şey için özür dilerim ama KullanıcıAdı ve Hesabı birleştirip mantıklı bir 'KullanıcıAdı' olarak saklayamaz mısınız? –

cevap

25

, Gerçekten kendin hesapla ilgili verileri almak edebilirsiniz Authenticator'ın getAuthToken() yönteminde, örneğin Daha sonra

final Bundle extraData = new Bundle(); 
    extraData.putString("someKey", "stringData"); 
    boolean accountCreated = am.addAccountExplicitly(account, password, extraData); 

: ablisco Eğer addAccountExplicitly() 'ın userData Paketi parametresi aracılığıyla keyfi kullanıcı verilerini depolamak için AccountManager yeteneğini kullanabilir açıkladı ile çalışan:

String myData = am.getUserData(account, "someKey"); 

Maalesef bu yazının yazıldığı gibi sadece bu yüzden veri ilk Paketi oluşturmak string olarak saklanmalıdır, dizeleri alabilirsiniz. Umarım bu birisine yardım eder.

+0

Uygulamamın hesap yöneticisini kullanarak bakıyorum ve e-postalar ve kullanıcı örnekleri gibi şeyler depolamam gerekiyor. Yukarıdaki yöntemi kullanarak yapmak güvenli midir? Veya herhangi bir uygulama kimliği ve e-postayı okuyabilir mi? –

+0

@TomHart - getUserData() belgesindeki (diğer uygulamaların Hesap verilerini okuyacağı yol) belgeleri şu şekildedir: "Bu yöntem, arayanın AUTHENTICATE_ACCOUNTS iznini almasını ve hesabın kimlik doğrulayıcısıyla aynı UID'ye sahip olmasını gerektirir." Bu, doğru şekilde kurulduğunda, yalnızca uygulamanızın bu verilere erişebileceği anlamına gelir. Ancak, herhangi bir hassas veriyi kaydetmek için AccountManager güvenli bir alan DEĞİLDİR. Cihaza fiziksel erişim, herkesin bu verileri okumasına izin verir. Bkz: http://developer.android.com/reference/android/accounts/AccountManager.html#getUserData(android.accounts.Account, java.lang.String) –

+1

Bazı testler yaptım, okuyabildiğimi gördüm Diğer hesaplar verileri, sadece anahtarı gerekli. Kullanıcı kimliklerini ve e-postaları güvenli bir şekilde nasıl depolayacağınız konusunda herhangi bir tavsiyeniz var mı? Tüm düşünebildiğim setUserData için gerçekten belirsiz bir anahtar kullanmaktır, örneğin .setUserData ("Bazı ^^! _ Really_StrangeEMa1L_Key!", UserEmail); 'ancak birisi uygulamayı bozarsa kullanabileceğim dizeyi alabilirler. –

2

userData Paketi biriyle yapılması:

AccountManager manager = AccountManager.get(context); 
manager.addAccountExplicitly(account, null, userData); 

veya açıkça değerler ekleyerek:

manager.setUserData(account, KEY, value); 

Ama sorun yaşıyorum Bu: p olarak

AccountManager IllegalArgumentException: key is null

+0

Cevabınız için teşekkürler. Hesap yöneticisini terk ettim. Sonunda onunla çok sıkıntı çektim. Projemin büyüyor gibi gözüktüğünü söyledim ve buna geri dönebilirim. Cevabınızı yakında kontrol edeceğim – JonWells

İlgili konular