gpt4 book ai didi

java - 在 Android 中处理 Google+ 登录

转载 作者:行者123 更新时间:2023-12-01 12:52:08 24 4
gpt4 key购买 nike

我已经实现了一种让用户使用其 Google+ 帐户登录应用程序的方法。在 Google Developers 网页上的示例中,登录过程与 Activity 生命周期相关:用户在 Activity 启动时登录,在 Activity 关闭时注销。

该应用程序有一个可以执行登录和注销功能的 Activity 。不过,我可能需要在其他 Activity 中访问 Google+ 服务。为了实现这一点,我需要在每个 Activity 以及其他方法上使用 connect 方法。我认为这是不好的,重复的代码。我如何以良好的方式实现这一点?

完整的登录系统如下所示。

public class MainActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener {

private GoogleApiClient googleApiClient;
private boolean intentInProcess = false;
private int PLUS_SIGN_IN = 63640;
private boolean signInClicked = false;
private ConnectionResult connectionResult;

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

googleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_LOGIN)
.build();
}

@Override
protected void onStart() {
super.onStart();

googleApiClient.connect();
}

@Override
protected void onStop() {
super.onStop();

if(googleApiClient.isConnected()) {
googleApiClient.disconnect();
}
}

private void resolveSignInErrors() {
if(connectionResult.hasResolution()) {
try {
intentInProcess = true;
connectionResult.startResolutionForResult(this, PLUS_SIGN_IN);
} catch(SendIntentException e) {
intentInProcess = false;
googleApiClient.connect();
}
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == PLUS_SIGN_IN) {
if(requestCode != RESULT_OK) {
signInClicked = false;
}

intentInProcess = false;

if(!googleApiClient.isConnecting()) {
googleApiClient.connect();
}
}
}

@Override
public void onConnectionFailed(ConnectionResult result) {
if(!intentInProcess) {
connectionResult = result;

if(signInClicked) {
resolveSignInErrors();
}
}
}

@Override
public void onConnected(Bundle connectionHint) {
signInClicked = false;
}

@Override
public void onConnectionSuspended(int cause) {
googleApiClient.connect();
}

public void signOutPlus() {
if(googleApiClient.isConnected()) {
Plus.AccountApi.clearDefaultAccount(googleApiClient);
googleApiClient.disconnect();
}
}

public void disconnectPlus() {
Plus.AccountApi.clearDefaultAccount(googleApiClient);
Plus.AccountApi.revokeAccessAndDisconnect(googleApiClient).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status result) {

}
});
}
}

最佳答案

创建一个实现 Google Play 服务的基本 Activity,然后在您需要使用 Google Play 服务时扩展该 Activity

例如。

public class GoogleActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener

然后扩展它

public class MainActivity extends GoogleActivity

关于java - 在 Android 中处理 Google+ 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24144558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com