0

エンドポイントを介して appengine バックエンドに接続された Android アプリケーションがあります。アプリケーションにユーザーの Google アカウント名を知ってもらいたいのですが、ここで
説明されているすべての認証手順を実行せずに簡単な方法があるかどうか疑問に思い ました。現時点ではセキュリティのことはあまり気にしません。たとえば、ユーザーの名前を使用して「こんにちは」と言うことができるようにしたり、アプリケーションを使用したユーザー名のリストをデータストアに保存したりできます。また、アプリを使用するためにユーザーにパスワードの入力を強制したくありません。
コードを使ってみた

GoogleAccountCredential credential = GoogleAccountCredential.usingAudience(this, "appname.appengine.com");
String try= credential.getSelectedAccountName();

OnCreate() 内ですが、null の結果が得られます。私も入れてみました

UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();

エンドポイント内にありますが、どちらも機能しません。
何か助けはありますか?前もって感謝します!

4

1 に答える 1

0

アカウントマネージャーを使用して、実際にアカウントを認証せずにユーザーのアカウントを取得できます。次に例を示します。

// Requires android.permission.GET_ACCOUNTS
AccountManager manager = AccountManager.get(ctx);
Account[] accounts = null;
try {
    accounts = manager.getAccounts();
} catch (SecurityException e) {
    Log.i(CTAG, "Unable to read due to SE");
}
if (null != accounts)
    for (Account account : accounts)
        Log.v(CTAG, "New account =" + account.name + ", " + account.type );

これは、アプリを使用したユーザーのリストを保存するという要件を満たす必要があります。

ただし、これでは、あいさつするユーザーの実際の名前はわかりません。ユーザーの名前を取得するには、ICS で追加されたプロファイル API を使用する必要があります (これには READ_PROFILE 権限が必要です)。ここで名前を取得できます。

http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.StructuredName.html

于 2013-04-30T17:55:37.053 に答える