android静默登录,无需用户与帐户管理员登录的gmail帐户进行交互

时间:2017-08-28 06:52:02

标签: android google-login

如果用户从帐户选择器登录,我可以从静默登录中获取详细信息。 我想在没有帐户选择器的情况下执行操作

我正在尝试显示用户个人资料详细信息,例如个人资料图片,从我的应用中显示而无需用户输入。通过在api中使用silentsign进行静默登录。

有没有办法在没有来自accountmanager的帐号选择器的情况下登录,

private void silentSign() {
//        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
//        startActivityForResult(signInIntent, RC_SIGN_IN);
        OptionalPendingResult<GoogleSignInResult> pendingResult =
                Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
        if (pendingResult.isDone()) {
            // There's immediate result available.
            handleSignInResult(pendingResult.get());


        } else {
            // There's no immediate result ready, displays some progress indicator and waits for the
            // async callback.
//            showProgressIndicator();
  pendingResult.setResultCallback(new ResultCallback<GoogleSignInResult>() {
                @Override
                public void onResult(@NonNull GoogleSignInResult result) {
                    handleSignInResult(result);
//                    hideProgressIndicator();
                }
            });
        }

  private void handleSignInResult(GoogleSignInResult result) {
        //If the login succeed
        if (result.isSuccess()) {
            //Getting google account
            GoogleSignInAccount acct = result.getSignInAccount();

            //Displaying name and email
            textViewName.setText(acct.getDisplayName());
            textViewEmail.setText(acct.getEmail());
            textGivenName.setText(acct.getGivenName());
            textFamilyName.setText( acct.getFamilyName());
            textid.setText(acct.getId());
            Uri photoUrl = acct.getPhotoUrl();



            //Initializing image loader
            imageLoader = CustomVolleyRequest.getInstance(this.getApplicationContext())
                    .getImageLoader();

            imageLoader.get(acct.getPhotoUrl().toString(),
                    ImageLoader.getImageListener(profilePhoto,
                            R.mipmap.ic_launcher,
                            R.mipmap.ic_launcher));


            //Loading image

            profilePhoto.setImageURI(photoUrl);

        } else {
            //If login fails
            Toast.makeText(this, "Login Failed", Toast.LENGTH_LONG).show();
        }
    }

1 个答案:

答案 0 :(得分:0)

所以这里的问题是,当用户第一次登录时,您必须通知他并获得他的许可。当用户授予权限时,您可以将令牌保存到服务器数据库中。现在情景开始,用户已经卸载了应用程序或将其安装在他/她使用同一帐户登录的其他设备上,现在既然您已经获得了许可,则可以只显示toast/snackbar并问候用户欢迎回来留言并默默地签下他。

我希望这可以澄清。

<强> PS 即可。解释很长,因此没有把它放在评论中。