我在使用jopenid的过程中,遇到了一些问题,在网上搜索相应的处理方法,基本上搜不到什么- -!所以以下这些大都是自己探索出来的,可能有遗漏,希望各位朋友补充。
1.下载相应的jar文件:
1). JOpenId-1.08.jar
2). sample.zip(此例子使用的是jopenid-1.07.jar,但我使用1.08版本无冲突)
下载地址:http://code.google.com/p/jopenid/downloads/list
2.项目部署后可直接运行,如果你运气好(之前已经做过一些配置),可能会一次性就成功,会显示与你邮箱相应的邮箱地址、用户名、性别等一系列数据。
3.可能会出现的问题:
1). url设置的问题,在OpenIdServlet.java里的init()方法里,默认是:
manager.setRealm("http://localhost");
manager.setReturnTo("http://localhost/openid");
可改成manager.setRealm("http://localhost:8080/工程名");
manager.setReturnTo("http://localhost:8080/工程名/openid"); ------ 相信你能看懂
2). 成功登陆了gmail或Yahoo,但返回不到该有的结果
中文乱码问题(用户名为中文),由于是get方式提交,所以需要自己做转码iso-8859-1 -> utf-8
这里提供一个简单的解决方案:
打开tomcat/conf目录下server.xml文件,在
<Connector port="8080" .../>里加入以下两条配置
useBodyEncodingForURI="true"
URIEncoding="UTF-8"
3). 在访问google或yahoo时,可能会出现以下两种错误
org.expressme.openid.OpenIdException: Request failed: https://www.google.com/accounts/o8/id
java.net.SocketTimeoutException: connect timed out
或
org.expressme.openid.OpenIdException: Request failed: http://open.login.yahooapis.com/openid20/www.yahoo.com/xrds
java.net.SocketTimeoutException: Read timed out
这个我也没有解决,多点几次吧!估计是gmail、yahoo的网络有问题,发布到应用上能稍微好点,实在不行就try/catch跳转到登陆界面吧。
就想到这么些了,如果有其他问题,欢迎与我一起探讨。
