【问题标题】:Retrieve a document from a google Account with OAuth使用 OAuth 从 google 帐户检索文档
【发布时间】:2011-08-02 18:30:54
【问题描述】:

我需要知道如何从特定用户那里获取文档,该用户是使用...进行身份验证的

    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();

当用户通过身份验证时,我需要从 google docs 获取文档。我知道我必须使用 OAuth,但我无法正确使用它。

希望有人能帮帮我,谢谢。

【问题讨论】:

  • “我无法正确使用它”?你能再明确一点吗?那么您的问题是 OAuth 问题还是授权后检索文档的问题?
  • 我的意思是我不知道如何使用 oauth 进行授权,我有一个用户已经登录,该用户在变量 user 中,但是如何从该用户获取 google docs 中的文档,我必须设置一些oauthParameters?我怎样才能得到令牌?,如果我已经有一个用户登录,我怎样才能得到他的文档...

标签: google-app-engine oauth google-api google-apps google-docs-api


【解决方案1】:

如果我已经有用户登录,我如何获取他的文档

这是一个很好的参考资料,比我自己提供的信息要多得多:

http://code.google.com/apis/documents/docs/3.0/developers_guide_java.html

这应该会让你走上正确的道路。

【讨论】:

  • 感谢您的帮助,但在这些示例中,使用变量命名的客户端来表示与文档列表 API 的客户端连接(带有身份验证),因此它们没有显示如何进行身份验证。跨度>
  • @Alexander,听起来您正在跳过文档的第一部分讨论使用 oAuth,后面的示例假设您已经完成了这部分。
【解决方案2】:

用户已通过 App Engine 的身份验证,但他们尚未针对任何其他服务进行身份验证,也未向您提供对它们的访问权限。您不能使用他们的 App Engine 凭据访问任何其他服务;您需要遵循标准的 OAuth 授权程序才能访问该用户拥有的任何其他服务。

【讨论】:

    【解决方案3】:
    1. 首先使用例如路标库执行 oauth 部分:这是一个 example (查看 Google 的示例代码)
    2. 在步骤 1 中完成 oauth 过程后;并存储 ACCESS_TOKEN 和 TOKEN_SECRET 你可以像下面的代码 sn-p 一样访问谷歌文档服务。

    (注意:CONSUMER_KEY 和 CONSUMER_SECRET 是您从 google 获得并在步骤 1 中使用的令牌。ACCESS_TOKEN 和 TOKEN_SECRET 是您在步骤 1 中完成 oauth 过程后 google auth 服务器发送给您的秘密访问令牌)

    希望这会有所帮助。

    GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
      oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
      oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
      oauthParameters.setOAuthToken(ACCESS_TOKEN);
      oauthParameters.setOAuthTokenSecret(TOKEN_SECRET);
    
      DocsService client = new DocsService("yourCompany-YourAppName-v1");
      client.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());
    
      URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full");
      DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class);
      for (DocumentListEntry entry : resultFeed.getEntries()) {
        System.out.println(entry.getTitle().getPlainText());
      }
    

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2014-02-25
      相关资源
      最近更新 更多