【发布时间】:2014-02-26 11:46:14
【问题描述】:
我正在开发使用 google Auth2.0 和 android 帐户管理器登录的应用程序。我成功登录并使用不同的 api 从我的谷歌获取数据,但我不知道如何从我的应用程序中注销以及何时注销想要再次显示登录屏幕。
【问题讨论】:
标签: java android google-api google-oauth google-authentication
我正在开发使用 google Auth2.0 和 android 帐户管理器登录的应用程序。我成功登录并使用不同的 api 从我的谷歌获取数据,但我不知道如何从我的应用程序中注销以及何时注销想要再次显示登录屏幕。
【问题讨论】:
标签: java android google-api google-oauth google-authentication
登录时,您已保存数据,即共享首选项中的访问令牌。因此,当您要注销时清除共享首选项。这是退出的唯一方法。
【讨论】:
通常我将帐户名保存在 SharedPreferences 中,然后在注销时从 SharedPreferences 中删除帐户名。从 onActivityResult
保存帐户名称if (resultCode == Activity.RESULT_OK && data != null && data.getExtras() != null) {
String accountName = data.getExtras().getString(AccountManager.KEY_ACCOUNT_NAME);
if (accountName != null) {
SharedPreferences settings = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREF_ACCOUNT_NAME, accountName);
editor.commit();
//do the rest after saving the account name on SharedPreferences
}
}
然后注销(我的注销发生在不同的活动上):
private void logOut(){
SharedPreferences sharedPreferences = getSharedPreferences("MainActivity",Context.MODE_PRIVATE);
if (sharedPreferences.getString(PREF_ACCOUNT_NAME,null)!=null){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(PREF_ACCOUNT_NAME);
editor.commit();
//here show the log-in screen again
}
}
【讨论】:
我认为你不能退出,你必须再次显示 AccountChooser
试试
Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String[] {"com.google"}, false, null, null, null, null);
startActivityForResult(intent, SOME_REQUEST_CODE);
【讨论】: