try {
VerificationResult verificationResult = getConsumerManager().verify(getOpenIdReturnUrl(), response,
discoveryInformation);
Identifier verifiedIdentifier = verificationResult.getVerifiedId();
if (verifiedIdentifier != null) {
AuthSuccess authSuccess = (AuthSuccess) verificationResult.getAuthResponse();
OpenIdDetails details = new OpenIdDetails();
details.setOpenId(verifiedIdentifier.getIdentifier());
// try to get additional details
if (authSuccess.hasExtension(AxMessage.OPENID_NS_AX)) {
MessageExtension ext = authSuccess.getExtension(AxMessage.OPENID_NS_AX);
if (ext instanceof FetchResponse) {
FetchResponse fetchResp = (FetchResponse) ext;
details.setMail(fetchResp.getAttributeValue("email"));
String fullname = fetchResp.getAttributeValue("fullname");
if (fullname == null) {
String firstname = fetchResp.getAttributeValue("firstname");
String lastname = fetchResp.getAttributeValue("lastname");
if (firstname == null) {
fullname = lastname == null ? null : lastname;
} else if (lastname != null) {
fullname = firstname + " " + lastname;
} else {
fullname = firstname;
}
}
details.setName(fullname);
}
} else if (authSuccess.hasExtension(SRegMessage.OPENID_NS_SREG)) {
MessageExtension extension = authSuccess.getExtension(SRegMessage.OPENID_NS_SREG);
if (extension instanceof SRegResponse) {
SRegResponse sRegResponse = (SRegResponse) extension;
details.setMail(sRegResponse.getAttributeValue("email"));
details.setName(sRegResponse.getAttributeValue("fullname"));
}