如果用户从帐户选择器登录,我可以从静默登录中获取详细信息。 我想在没有帐户选择器的情况下执行操作
我正在尝试显示用户个人资料详细信息,例如个人资料图片,从我的应用中显示而无需用户输入。通过在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();
}
}
答案 0 :(得分:0)
所以这里的问题是,当用户第一次登录时,您必须通知他并获得他的许可。当用户授予权限时,您可以将令牌保存到服务器数据库中。现在情景开始,用户已经卸载了应用程序或将其安装在他/她使用同一帐户登录的其他设备上,现在既然您已经获得了许可,则可以只显示toast/snackbar
并问候用户欢迎回来留言并默默地签下他。
我希望这可以澄清。
<强> PS 即可。解释很长,因此没有把它放在评论中。