오픈아이디에서 제공하는 추가정보(이메일, 닉네임, 생일 등)를 얻어오려면 Simple Registration Extension를 이용해서 가져와야합니다. (OpenID4java에 들어있는 Servlet예제를 보면 Attribute Exchange로 하는데, 이걸로 하면 안되더군요-_-; 그래서 Outsider님의 블로그의 글을 참조를 했습니다.
http://blog.outsider.ne.kr/170

만약 myid.net에 한글 닉네임이 있는 경우에는 가져올 때 URL을 통해서 가져오는데요.
URL이 UTF-8로 되어있고, encodeURI해서 오는데, 이것을 제대로 decode를 못해줘서 인증에 실패를 하더군요.

가져올 때
[code]ParameterList response = new ParameterList(httpReq.getParameterMap());[/code]
이렇게 해서 가져오면 한글인 경우 문제가 발생합니다.
Verification failed for: null reason: null 이런 에러를 발생하는데, 디버깅할 때 parameterList에 있는 한글로 받아야하는 닉네임이 있다면 깨져서 나올겁니다.
그래서 제가 임의로 url을 URIDecoder로 decode를 해서 nickname을 한글로 바꿨더니 인증이 되더군요.
다른 방법을 찾다가 MyID담당자님께 물어봤더니 아래와 같은 방법을 가르쳐주셨습니다 ^^

아래와 같이 파라메터를 얻어오면 됩니다.
[code]ParameterList paramList = ParameterList.createFromQueryString(request.getQueryString());[/code]
이렇게 하니까 되더군요.

알려주신 MyID의 수호이님 감사합니다 ^^

 
Posted by 머드초보

댓글을 달아 주세요