2

我试图使用谷歌 Openid 提供程序在 Java 中实现 OpenId。我读到我们需要做response.sendRedirect()

这给了我一个 XML 文档作为回报,这意味着它要求我保存一个 XRDS 文档。我不知道如何在 servlet 中处理这个文件。如果有人解决这个简单的问题,那将是很大的帮助。

4

1 回答 1

0

不确定您是否知道openid4java - 它是一个 openid 库,它应该具有您正在寻找的功能。无论您决定是否使用它,请查看示例使用者代码,如果您决定不使用该库,它应该为您提供如何自己检索和解析 XRDS 的想法。

例如,使用 openid4java 库,您可以使用以下简单的方式获取 Google 端点:

import java.util.List;

import org.openid4java.consumer.ConsumerManager;
import org.openid4java.discovery.DiscoveryException;
import org.openid4java.discovery.DiscoveryInformation;

public class XRDSConsumer {
  public static void main(String[] args) {
    ConsumerManager manager = new ConsumerManager();
    try {
      //get XRDS from Google discovery url
      List<DiscoveryInformation> discoveries = 
          manager.discover("https://www.google.com/accounts/o8/id");

      for(DiscoveryInformation info: discoveries) {
        //will get something like: https://www.google.com/accounts/o8/ud
        System.out.println(info.getOPEndpoint());
      }
    } catch (DiscoveryException e) {
      e.printStackTrace();
    }
  }  
}
于 2013-07-08T06:54:11.083 回答