我需要一步一步的过程,包括一些用于 Google 的示例 android 代码以及在一个 Activity 中的登录和从 android eclipse 中的另一个 Activity 中注销。
最佳答案
经过一个多星期的努力才找到答案。 我这样做了, 登录后,将 sharedpreferences 中的 boolean isSignedIn 保存为 true。
private SharedPreferences.Editor editor;
private SharedPreferences prefs;
editor = getSharedPreferences(getString(R.string.userDetails), MODE_PRIVATE).edit();
editor.putBoolean(getString(R.string.isSignedIn), true);
editor.apply();`
现在,当用户点击注销时,从任何 Activity 中,将 bool 值更改为 false。
现在在构建 googleApiClient
的登录 Activity 中。在它的 onStart 方法中。
检查 isSignedIn
是否为假。
@Override
public void onStart() {
super.onStart();
if (!prefs.getBoolean(getString(R.string.isSignedIn), false)) {
signOut();
}
}
在 onConnected
中做同样的事情
@Override
public void onConnected(Bundle connectionHint) {
if (mGoogleApiClient.isConnected()) {
Log.i(TAG, "onConnected: " + "yes it is connected");
if (!prefs.getBoolean(getString(R.string.isSignedIn), false)) {
signOut();
}
}
}
这将注销并撤销访问权限。
public void signOut() {
if (mGoogleApiClient != null) {
Log.e(TAG, "signOut: " + mGoogleApiClient + mGoogleApiClient.isConnected());
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
if (mGoogleApiClient.isConnected()) {
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
// ...
Log.i(TAG, "onResult: " + mGoogleApiClient);
}
});
Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
Log.i(TAG, "onResult: Revoke Access status:" + status.getStatus());
}
});
}
}
}
关于Google 的 Android 代码加上在一个 Activity 中登录并从另一个 Activity 中注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31911620/