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

时间:2016-04-20 01:12:51

标签: android active-directory adal oauth2

我正在与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对象?

感谢 汤姆

1 个答案:

答案 0 :(得分:0)

Userinfo是从服务器重新调用的ID_token构造的。如果是adfs blue(3.0),它不会返回ID_token,因此您无法真正知道用户在IDP登录的内容。如果可以升级,Adfs阈值支持ID_token。