如何使用java servlet实现OpenId时捕获谷歌提供的XRDS文档

时间:2013-07-06 01:14:33

标签: java openid google-oauth google-openid

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

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

1 个答案:

答案 0 :(得分:0)

不确定您是否知道openid4java - 它是一个openid库,它应该具有您正在寻找的功能。无论您是否决定使用此功能,请查看sample consumer code,如果您决定不使用该库,它应该让您了解如何自行检索和解析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();
    }
  }  
}