考虑以下代码摘录:
String openIDProviderURL = "https://www.google.com/accounts/o8/id";
try {
URI loc = getUI().getPage().getLocation();
List discoveries = manager.discover(openIDProviderURL);
DiscoveryInformation discovered = manager.associate(discoveries);
getUI().getSession().setAttribute("openid-disc", discovered);
AuthRequest authReq = manager.authenticate(discovered, "http://"+loc.getHost()+":"+loc.getPort()+loc.getPath());
FetchRequest fetch = FetchRequest.createFetchRequest();
authReq.addExtension(fetch);
System.out.println("DEST URL: "+authReq.getDestinationUrl(true));
getUI().getPage().setLocation(authReq.getDestinationUrl(true));
} catch (DiscoveryException ex) {
Logger.getLogger(NavigatorUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (MessageException ex) {
Logger.getLogger(NavigatorUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (ConsumerException ex) {
Logger.getLogger(NavigatorUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
但是,使用 Google 进行身份验证有效,谁能告诉我如何从我在这里使用的对象中提取实际的 openID-identifier-URL 吗?当身份验证成功时,它让我现在可以写“ INFO: Verification succeeded for: https://www.google.com/accounts/o8/id?blablabla
”,但到目前为止,我还没有找到在程序中访问这个 URL 的方法。有人可以帮帮我吗?
PS:我一直在阅读处理 openID4java 的旧帖子。但是,它们都处理失败的身份验证等,对我来说这不是问题。如果以前有人问过这个问题,我很抱歉。