我正在与ADAL合作 https://github.com/Azure-Samples/active-directory-android
我的代码非常接近地模仿了样本
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();
}
}
});
我传入用户的电子邮件地址,但如果用户更改并使用其他电子邮件地址,onSuccess上的ADAL库永远不会告诉我用户更改了它。 AuthenticationResult有一个字段调用mUserInfo,它应该包含用户的名字/姓氏电子邮件等。
但对我来说,每次成功登录都是mUserInfo = null。
任何人都知道如何让ADAL返回完全填充的mUserInfo对象?
感谢 汤姆
答案 0 :(得分:0)
Userinfo是从服务器重新调用的ID_token构造的。如果是adfs blue(3.0),它不会返回ID_token,因此您无法真正知道用户在IDP登录的内容。如果可以升级,Adfs阈值支持ID_token。