我有一个非gae,gwt应用程序,它有一个模块,允许用户通过谷歌docs api在线创建文档。
为此,我首先要求用户输入文档的名称和类型,而不是通过带有给定参数的google docs api创建新文档,并且该servlet的onSucces部分返回在客户端使用的编辑链接打开新页面以编辑创建的文档。
问题是,每当我尝试打开editLink用户时,都必须输入登录信息。为了解决这个问题,我尝试使用谷歌客户端登录,但我想我完全迷失了。
首先我有用户的用户名和密码,可以直接使用它们,搜索后我尝试了一些通常会返回this和that等标记的示例。现在我应该怎么做令牌?如何使用它来完成登录过程或完全找到另一种登录方式?所有那些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");
}
感谢您的帮助。
答案 0 :(得分:2)
如果我建议使用OAuth而不是客户端登录,这是过时且不太安全的。 功能基本相同(对于OAuth 2.0,有更多方法来处理登录)。
我知道,尝试了解如何通过OAuth访问api非常令人困惑,所以我尝试将其分解一下:
如果您使用OAuth 2.0,您可能希望使用this之类的库,或者您可以试用my own(尽管我是为Android编写的,但这可以与其他Java应用程序一起使用,包括Web Apps )
对不起,我现在不能给你一个更准确的答案,因为我从未使用过GWT。我只能说,尝试使用OAuth2,它实际上非常简单(在您了解所有这些令人困惑的事情,如授权流程,不记名令牌等),并且一旦他完成首次登录,对您的用户来说真的很舒服。 / p>