即使我没有为其提供帐户,为什么GoogleApiClient会成功连接?

时间:2016-07-05 15:40:42

标签: android authentication google-authentication

我正在尝试在我的Android应用中实施Google登录。

这是我的代码:

public class SignIn extends AppCompatActivity implements  GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

    private GoogleSignInOptions gso;
    private GoogleApiClient mGoogleApiClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_in);
        gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestProfile()
                .requestEmail()
                .build();
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addOnConnectionFailedListener(this)
                .addConnectionCallbacks(this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();
        mGoogleApiClient.connect();

    }

    @Override
    public void onConnected(Bundle bundle) {
        Toast.makeText(this, "CONNECTED", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onConnectionSuspended(int i) {
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
            Toast.makeText(this, "FAILED", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onStop() {
        super.onStop();
        mGoogleApiClient.disconnect();
    }

}

根据this指南,尝试在用户未登录时进行连接应该会导致onConnectionFailed回调。但是,此代码始终显示“CONNECTED”toast,即使我从未授权该应用程序。

我到底误解了什么?我该如何检查用户是否已登录,如果此方法不起作用?

1 个答案:

答案 0 :(得分:0)

当onConnected方法调用时,它并不代表User is signed in。这意味着mGoogleApiCLient已连接。

在此回调之后,应用程序可以对客户端提供的其他方法发出请求。

您可以从此处获取reference