【问题标题】:restfb: Writing a facebook application with java (using the new graph api)restfb:用 java 编写一个 facebook 应用程序(使用新的图形 api)
【发布时间】:2011-07-12 00:47:56
【问题描述】:

我正在尝试使用带有 RestFB 的 Java Tomcat 编写一个 facebook 应用程序。

restfb 文档显示如下:

我认为我可能正在查看错误的说明,这是针对 facebook 连接或除了 apps.facebook.com/app_name 中的实际 facebook 应用程序之外的任何其他内容。

非常感谢有关该问题的任何相关信息。我只是想创建一个简单的 facebook 应用程序来打印用户的姓名。

一般来说,在我获取用户的访问令牌后,我可以执行以下操作:

FacebookClient facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN);
User user = facebookClient.fetchObject("me", User.class);
out.println("User name: " + user.getName());

我的问题是如何正确获取用户的访问令牌?在我在帖子顶部显示的信息中,它表明我需要提出 2 个请求。第一个用于代码,另一个用于访问令牌。并且访问令牌的请求实际上向用户显示了我的应用程序密钥,因为每次我将他转发到不同的页面时,用户都可以轻松查看获取和设置参数。

所以我想我在这里迷路了。

请帮忙! :)

谢谢

cmets 后更新

根据这些说明,我需要两次重定向用户的页面。首先获取代码,然后获取访问令牌。用户可以看到这两个重定向,因此他可以很容易地从获取参数中看到 facebook 应用程序密钥和密钥。我如何确保这些步骤对用户隐藏?

【问题讨论】:

  • 很抱歉,您正在查看正确的文档。这些是需要采取的确切步骤。事实上,您可以从浏览器运行这些步骤。
  • 或者,如果您想为您的应用程序创建 OAuth 2 授权流程 (code.google.com/p/joauth),请使用 JOAuth。我正在使用它。
  • “他可以很容易地从 get 参数中看到 facebook 应用程序密钥和密钥” -- 有什么大不了的。您的应用与您的域相关联。因此,除非您的域处理请求-响应,否则不会对请求进行身份验证。
  • 感谢你们帮我解决问题.. 试试 JOAuth

标签: java facebook restfb


【解决方案1】:

如 cmets 中所述,这些是访问 Facebook 的图形 API 所需的步骤。但是,要回答您的第二个问题:

“我如何确保这些步骤 对用户隐藏?”

只有第一个请求应该由用户的浏览器执行。目的是 Facebook 希望确保它是为用户的 Facebook 身份提供的唯一授权。根据您正在编写的应用程序,您可以使用重定向 URL 指向您指定的默认重定向 URL,或者在您的网站上指定一个自定义 URL,您将使用该 URL 来检索令牌。第一种方法通常由独立应用程序使用,例如可以控制浏览器如何处理重定向的移动设备。第二种方法将用于自定义的基于 Web 的应用程序。收到访问令牌后,您将在代码中执行第二个操作(使用您最喜欢的 http api),而不是通过浏览器。 access_token url 上的重定向与 authentication-url 上指定的重定向 url 进行比较。 Facebook 仅将其用于验证,并且不会在请求成功完成时执行实际重定向。

以下是高级步骤:

  1. 将用户的浏览器重定向到指定适当的redirect_uri的身份验证url
  2. 从重定向的浏览器请求中检索验证令牌
  3. 使用您首选的 HTTP 框架执行 access_token 检索(无需用户输入)
  4. 解析结果并检索访问令牌
  5. 带有令牌的初始 restfb 并根据需要使用

【讨论】:

    【解决方案2】:

    REST API 已被弃用。您应该查看 JavaScript 和 Graph APIs - 这里有一篇很好的文章:http://ocpsoft.org/opensource/creating-a-facebook-app-setup-and-tool-installation/(三部分系列,非常详细:)

    【讨论】:

      最近更新 更多