2016-04-20 18 views
0

Mit dem folgenden Code, der den Google-Konto des Benutzers abruft, gmail, ich frage mich, warum ich von Geräten wie meine null erhalten (das natürlich auf meinem gmail läuft), während es meine Mutter Geräte arbeitet auf:Warum bekomme ich beim Abrufen der Gmail des Benutzers null?

public class MainActivity extends AppCompatActivity { 

    final String TAG = "Sample2"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     String test = getEmail(getApplicationContext()); 
     Log.d(TAG, "Email is: " + test); 
     TextView emailTxt = (TextView)findViewById(R.id.emailTxt); 
     emailTxt.setText(test); 
    } 

    private String getEmail(Context context) { 
     AccountManager accountManager = AccountManager.get(context); 
     Account account = getAccount(accountManager); 

     if (account == null) { 
      return null; 
     } else { 
      return account.name; 
     } 
    } 

    private static Account getAccount(AccountManager accountManager) { 
     Account[] accounts = accountManager.getAccountsByType("com.google"); 
     Account account; 
     if (accounts.length > 0) { 
      account = accounts[0]; 
     } else { 
      account = null; 
     } 
     return account; 
    } 
} 

ich auch die folgende Erlaubnis in meine Manifest-Datei enthalten:

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

Offensichtlich ist es wegen meiner Gerät ... Aber es kann nicht das einzige Gerät sein, das null ist zurückkehrt, so dass ich weiß nicht, ob dies ist ein guter Ansatz für ein eindeutiges Zeichenfolgen-Token, wenn die Nutzlast mit In-App-Abrechnung überprüft wird.

Oh, und hier ist ein Screenshot von dem, was ich in meinem Accounts & Sync Einstellungen siehe:

enter image description here

... Gibt es etwas, was ich hier fehlt bin?

Antwort

0

Basierend auf dem Dokument Set the developer payload string. Bei Kaufanfragen sollten Sie die E-Mail-Adresse des Benutzers nicht in der Payload-Zeichenfolge verwenden, da sich die Adresse ändern kann.

Sie sollten ein Zeichenfolgen-Token übergeben, das Ihrer Anwendung bei der Identifizierung des Benutzers, der den Kauf getätigt hat, hilft, damit Sie später überprüfen können, ob dies ein legitimer Kauf durch diesen Benutzer ist. Bei Verbrauchsmaterialien können Sie eine zufällig generierte Zeichenfolge verwenden. Bei nicht konsumierbaren Artikeln sollten Sie jedoch eine Zeichenfolge verwenden, die den Benutzer eindeutig identifiziert.

+0

Danke für die Antwort, aber das ist die Sache. Für nicht konsumierbare Elemente kann ich nicht herausfinden, wie ein eindeutiges String-Token für jeden Benutzer generiert wird, während das Token auf allen seinen Geräten ausgeführt wird ... Daher erhalte ich E-Mail-Adressen und verschlüssele sie dann sofort als Token. – DaveNOTDavid

+0

Was würden Sie für ein Token vorschlagen, das auf allen Geräten eines Benutzers ausgeführt wird? – DaveNOTDavid

Verwandte Themen