从android上的ADAL获取登录用户信息

从android上的ADAL获取登录用户信息,android,active-directory,adal,oauth2,Android,Active Directory,Adal,Oauth2,我和来自澳大利亚的阿达尔一起工作 我的代码与示例非常接近 mAuthContext.acquireToken(ToDoActivity.this, Constants.RESOURCE_ID, Constants.CLIENT_ID, Constants.REDIRECT_URL, Constants.USER_HINT, new AuthenticationCallback<AuthenticationRe

我和来自澳大利亚的阿达尔一起工作

我的代码与示例非常接近

        mAuthContext.acquireToken(ToDoActivity.this, Constants.RESOURCE_ID,
                Constants.CLIENT_ID, Constants.REDIRECT_URL, Constants.USER_HINT,
                new AuthenticationCallback<AuthenticationResult>() {

                    @Override
                    public void onError(Exception exc) {
                        if (mLoginProgressDialog.isShowing()) {
                            mLoginProgressDialog.dismiss();
                        }
                        Toast.makeText(getApplicationContext(),
                                TAG + "getToken Error:" + exc.getMessage(), Toast.LENGTH_SHORT)
                                .show();
                        navigateToLogOut();
                    }

                    @Override
                    public void onSuccess(AuthenticationResult result) {
                        if (mLoginProgressDialog.isShowing()) {
                            mLoginProgressDialog.dismiss();
                        }

                        if (result != null && !result.getAccessToken().isEmpty()) {
                            setLocalToken(result);
                            sendRequest();
                        } else {
                            navigateToLogOut();
                        }
                    }
                });
mAuthContext.acquireToken(ToDoActivity.this,Constants.RESOURCE\u ID,
Constants.CLIENT\u ID、Constants.REDIRECT\u URL、Constants.USER\u提示、,
新建AuthenticationCallback(){
@凌驾
公共无效申报人(例外情况除外){
if(mLoginProgressDialog.isShowing()){
mLoginProgressDialog.dismise();
}
Toast.makeText(getApplicationContext(),
标记+“getToken错误:”+exc.getMessage(),Toast.LENGTH\u SHORT)
.show();
导航注销();
}
@凌驾
成功时公共无效(AuthenticationResult){
if(mLoginProgressDialog.isShowing()){
mLoginProgressDialog.dismise();
}
if(result!=null&&!result.getAccessToken().isEmpty()){
setLocalToken(结果);
sendRequest();
}否则{
导航注销();
}
}
});
我传入用户的电子邮件地址,但是如果用户更改了它并使用了不同的地址,onSuccess上的ADAL库不会告诉我用户更改了它。AuthenticationResult有一个名为mUserInfo的字段,该字段应包含用户的名/姓电子邮件等

但对我来说,每次成功登录mUserInfo=null

有人知道如何让ADAL返回一个完全填充的mUserInfo对象吗

谢谢

Tom

Userinfo是从服务器返回的ID\u令牌构造的。在adfs blue(3.0)的情况下,它不会返回ID_令牌,因此您无法真正了解在IDP上登录的用户。如果可以升级,Adfs阈值支持ID_令牌。

用户信息是从服务器返回的ID_令牌构造的。在adfs blue(3.0)的情况下,它不会返回ID_令牌,因此您无法真正了解在IDP上登录的用户。如果您可以升级,Adfs阈值支持ID_令牌。

您是否以授权的身份针对AAD或Adfs运行代码?Adfs授权。谢谢你的邀请reply@tomhackbarth,你知道怎么处理吗?我也面临同样的问题。我们可以看到一个用户已经过身份验证,但不知道他们是谁。在这里看到我的答案:也许会很有帮助,你是否以授权的身份针对AAD或adfs运行代码?adfs授权。谢谢你的邀请reply@tomhackbarth,你知道怎么处理吗?我也面临同样的问题。我们可以看到一个用户已通过身份验证,但不知道他们是谁。请看我的回答:“ADFS thesholl”可能会很有帮助。您是指ADFS 2016和OpenID/Connect流吗?是的。这就是我的意思。让我看看3.0是否有任何更新可以帮助您获取ID令牌抱歉,adfs 3中不支持ID令牌。0@KanishkPanwar-MSFT,如果ADFS 3.0中没有
id\u令牌
,那么使用ADAL的应用程序应该如何识别经过身份验证的用户?我们得到了一个访问令牌,但即使我们解码了它,我们也没有任何东西可以区分一个用户和另一个用户。我们已为依赖方设置了声明,但在访问令牌中未获得任何信息。子声明应标识用户。通过“ADFS theshold”您是指ADFS 2016和OpenID/Connect流吗?是的。这就是我的意思。让我看看3.0是否有任何更新可以帮助您获取ID令牌抱歉,adfs 3中不支持ID令牌。0@KanishkPanwar-MSFT,如果ADFS 3.0中没有
id\u令牌
,那么使用ADAL的应用程序应该如何识别经过身份验证的用户?我们得到了一个访问令牌,但即使我们解码了它,我们也没有任何东西可以区分一个用户和另一个用户。我们已为依赖方设置了声明,但在访问令牌中未获取任何信息。子声明应标识用户。