1

我正在使用来自 https://github.com/Azure-Samples/active-directory-android的 ADAL

我的代码非常接近地模仿了示例

        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 对象?

谢谢汤姆

4

1 回答 1

0

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

于 2016-04-20T15:17:22.497 回答