Google客户端登录处理AuthToken

时间:2012-04-22 20:59:49

标签: java gwt authentication oauth google-docs-api

我有一个非gae,gwt应用程序,它有一个模块,允许用户通过谷歌docs api在线创建文档。

为此,我首先要求用户输入文档的名称和类型,而不是通过带有给定参数的google docs api创建新文档,并且该servlet的onSucces部分返回在客户端使用的编辑链接打开新页面以编辑创建的文档。

问题是,每当我尝试打开editLink用户时,都必须输入登录信息。为了解决这个问题,我尝试使用谷歌客户端登录,但我想我完全迷失了。

首先我有用户的用户名和密码,可以直接使用它们,搜索后我尝试了一些通常会返回thisthat等标记的示例。现在我应该怎么做令牌?如何使用它来完成登录过程或完全找到另一种登录方式?所有那些oauth1,oauth2等文件都让我感到困惑。

这是我的步骤;

服务器端;

    LinkedHashMap<String, String> hashMap = new LinkedHashMap<String, String>();

    // Login
    DocumentList docList = new DocumentList("document");
    docList.login(ServletUtil.googleDocsLoginInfo().get("username"), ServletUtil.googleDocsLoginInfo().get("password"));

    //Create document with a unique suffix
    String docName= parameterName+ "-Created-" + new Date();
    docList.createNew(docName, dosyaTur);

    // Find the created document and store editLink
    DocumentListFeed feed = docList.getDocsListFeed("all");

    for (final DocumentListEntry entry : feed.getEntries()) {

        if (entry.getTitle().getPlainText().equals(docName)) {

            hashMap.put("editlink", entry.getDocumentLink().getHref());

        }

    }

    return hashMap;

和客户方;

    @Override
    public void onSuccess(LinkedHashMap<String, String> result) {


        String editLink = result.get("editlink");

        Window.open(editLink,"newwindow","locationno");

    }

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果我建议使用OAuth而不是客户端登录,这是过时且不太安全的。 功能基本相同(对于OAuth 2.0,有更多方法来处理登录)。

我知道,尝试了解如何通过OAuth访问api非常令人困惑,所以我尝试将其分解一下:

如果您使用OAuth 2.0,您可能希望使用this之类的库,或者您可以试用my own(尽管我是为Android编写的,但这可以与其他Java应用程序一起使用,包括Web Apps )

当用户第一次使用您的应用程序登录时会发生这种情况:

  1. &GT;您的应用发送授权请求,其中包含有关您应用的一些信息 - 例如,您的应用需要在Google上注册,因此有一个特殊的应用密钥
  2. &LT;服务器向您发送 url ,在新的浏览器窗口中打开它并让用户登录。在那里,他将被要求允许您的应用访问他的帐户(或其部分内容) - 当他确认将提示他需要复制的授权码
  3. &GT;用户返回您的应用,您将在那里向他询问授权码。在他提供之后,您的应用再次与服务器连接,并将代码作为用户的某种授权许可发送。
  4. &LT;服务器使用访问令牌
  5. 进行回答
  6. 您需要做的就是在对标题消息中隐藏的服务器的所有请求中使用此访问令牌(也称为持票人令牌)。
  7. 对不起,我现在不能给你一个更准确的答案,因为我从未使用过GWT。我只能说,尝试使用OAuth2,它实际上非常简单(在您了解所有这些令人困惑的事情,如授权流程,不记名令牌等),并且一旦他完成首次登录,对您的用户来说真的很舒服。 / p>