I am trying out simple-openid jsp samples with additional code for
fetching email attribute.
Not sure what i am doing wrong. Please help!!!
I have modified my consumer_redirect.jsp to fetch email. The redirect
page seems to have generated following hidden values.
<input type="hidden" name="openid.ns.ext1" value="http://
openid.net/srv/ax/1.0-draft4"/>
<input type="hidden" name="openid.ext1.mode"
value="fetch_request"/>
<input type="hidden" name="openid.ext1.type.email"
value="
http://schema.openid.net/contact/email"/>
<input type="hidden" name="openid.ext1.required" value="email"/
>
<button type="submit">Continue...</button>
</form>
I modified my consumer_returnurl.jsp to
// extract the parameters from the authentication response
// (which comes in as a HTTP request from the OpenID
provider)
ParameterList responselist =
new ParameterList(request.getParameterMap());
// retrieve the previously stored discovery information
DiscoveryInformation discovered =
(DiscoveryInformation)
session.getAttribute("openid-disco");
// extract the receiving URL from the HTTP request
StringBuffer receivingURL = request.getRequestURL();
String queryString = request.getQueryString();
if (queryString != null && queryString.length() > 0)
receivingURL.append("?").append(request.getQueryString());
// verify the response; ConsumerManager needs to be the
same
// (static) instance used to place the authentication
request
VerificationResult verification = manager.verify(
receivingURL.toString(),
responselist, discovered);
// examine the verification result and extract the
verified identifier
Identifier verified = verification.getVerifiedId();
if (verified != null)
{
AuthSuccess authSuccess =
(AuthSuccess) verification.getAuthResponse();
if (authSuccess.hasExtension(AxMessage.OPENID_NS_AX))
{
FetchResponse fetchResp = (FetchResponse)
authSuccess.getExtension(AxMessage.OPENID_NS_AX);
List aliases = fetchResp.getAttributeAliases();
for (Iterator iter = aliases.iterator(); iter.hasNext();) {
String alias = (String) iter.next();
List values = fetchResp.getAttributeValues(alias);
if (values.size() > 0) {
request.setAttribute(alias, values.get(0));
if (alias.equals("Email")) {
String email = (String) values.get(0);
session.setAttribute("openid-email",
email);
}
}
}// iterator
What am i doing wrong?
- very desperate.
thanks