在appengine连接的android项目中获取帐户名称

时间:2013-04-30 14:01:38

标签: android google-app-engine authentication

我有一个通过端点连接到appengine后端的android应用程序。我希望应用程序知道用户的谷歌帐户名称,我想知道是否有一种简单的方法,而不经过所述的所有身份验证程序here
我现在并不关心安全问题,例如,我想通过使用他的名字向用户说“hello”,或者在数据存储区中存储使用的用户名列表应用程序。我不希望用户被迫输入密码来使用我的应用程序。
我试着使用代码

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

在OnCreate()中,但它给出了一个null结果。我也试着把

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

在端点内部,但它也不起作用。
有帮助吗?提前谢谢!

1 个答案:

答案 0 :(得分: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