我最近一直在处理关于Android的Google+登录,有一件事让我烦恼。
在所有官方批准的示例中,没有专门显示登录过程的方法。每次尝试记录某人时调用的方法称为resolveSignInError(),如下所示:
private void resolveSignInError() {
if (mConnectionResult.hasResolution()) {
try {
mIntentInProgress = true;
mConnectionResult.startResolutionForResult(this, RC_SIGN_IN);
Log.d("mGoogleApiClient ", mGoogleApiClient.toString());
} catch (IntentSender.SendIntentException e) {
mIntentInProgress = false;
mGoogleApiClient.connect();
}
}
}
此方法还依赖于mConnectionResult这一事实,该连接在on连接失败方法中设置
public void onConnectionFailed(ConnectionResult result) {
if (!result.hasResolution()) {
GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this,
0).show();
return;
}
if (!mIntentInProgress) {
// Store the ConnectionResult for later usage
mConnectionResult = result;
if (mSignInClicked) {
// The user has already clicked 'sign-in' so we attempt to
// resolve all
// errors until the user is signed in, or they cancel.
resolveSignInError();
}
}
}
因此,整个计划围绕着至少一次登录失败。 有谁知道为什么没有一种方法可以直接登录谷歌加? 为什么这是构建可读软件的一种方式?
答案 0 :(得分:2)
原因是该设备无法确定您是否确实需要登录 - 登录实际上更像是访问设施(就像您可能使用位置一样)而不是输入用户名和密码。基本流程是:
如果您想要登录,则需要完成连接结果解析。
微妙的是,即使用户之前从未在设备上使用该应用,您也可以转到第2步!所以,例如,如果我去你的网站并在那里登录,那么安装你的Android应用程序。
因此,没有登录方法的原因是登录状态实际上是远程的 - 它存在于Google服务器上,而不是设备本身。因此,流程必须是异步的。
答案 1 :(得分:0)
我知道这个帖子很老了。每次在Google上都会更新。现在google play store API v 8.4已经发布,onConnectionFailed正是它所要做的。
答案 2 :(得分:-1)
以下是非常正常的示例https://developers.google.com/+/mobile/android/sign-in:
有方法
`@Override
public void onConnected(Bundle connectionHint) {
mSignInClicked = false;
Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show();
}`
第一步是https://developers.google.com/+/mobile/android/getting-started