2017-08-28 156 views
0

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

我试图显示用户个人资料详情,如个人资料图片,从我的应用程序显示,无需用户输入。通过在api中使用silentsign无声登录iam。

有没有什么办法让登入不从的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(); 
     } 
    } 

回答

0

所以这里的前提条件是,首次当你的用户迹象已经通知他,并把他的许可。当用户授予权限时,可以将令牌保存到服务器数据库中。现在情况开始了,用户已经卸载了应用程序,或者将其安装在他/她使用同一个帐户登录的其他设备上,现在您已经获得了许可,您可以简单地显示toast/snackbar并向用户欢迎回来消息,并默默签署他。

我希望这个澄清。

PS。解释很长,因此没有在评论中提到。

+0

我想显示用户gmail个人资料图像,用户名登录在设备中的gmail帐户(通过使用帐户管理器我们将无法获得用户gmail配置文件图像)。这些需要在应用程序启动后显示(如果有多个帐户,没有像gmail帐户选择器那样的用户交互) – Bhargavaroyal

+0

按照要求,想要在我们的应用程序中显示如下图所示的用户详细信息:https:// www。 google.co.in/imgres?imgurl=https%3A%2F%2Fwww.androidheadlines.com%2Fwp-content%2Fuploads%2F2017%2F06%2FYouTube-for-Android-TV-New-4.jpg&imgrefurl=https%3A% 2F%2Fwww.androidheadlines.com%2F2017%2F06%2Fandroid-TV-YouTube上获得-A-新外观与 - 最新-update.html和文档ID = YFuQTvqF6A3jnM&tbnid = n1xvchTuiu9vLM%3A&RET = 10ahUKEwiZtsKiu_nVAhXKo48KHUc_DuEQMwgmKAAwAA..i&W = 1366&H = 768&安全=关和客户端= firefox-b-ab&bih = 681&biw = 1467&q = youtube%20android%20user%20profile&ved = 0ahUKEwiZtsKiu_nVAhXKo48KHUc_DuEQMwgmKAAwAA&iact = mrc&uact = 8 – Bhargavaroyal

+0

因此,正如我所说的,你必须首先询问权限,然后保存令牌。在下次你可以使用这个令牌并使用REST API或SDK获取后, –