我正在尝试使用 Java tomcat 和 RestFB 编写 Facebook 应用程序。
restfb 文档显示以下内容:
- 创建 Facebook 应用程序
- 请求https://graph.facebook.com/oauth/authorize?client_id=MY_API_KEY& redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_stream,offline_access,create_event
- Facebook 会将您重定向至 http://www.facebook.com/connect/login_success.html ?代码=MY_VERIFICATION_CODE
- 请求https://graph.facebook.com/oauth/access_token?client_id=MY_API_KEY& redirect_uri=http://www.facebook.com/connect/login_success.html& client_secret=MY_APP_SECRET&code=MY_VERIFICATION_CODE
- Facebook 将使用 access_token=MY_ACCESS_TOKEN 进行响应
我认为我可能看到了错误的说明,这适用于 Facebook 连接或 apps.facebook.com/app_name 内实际 Facebook 应用程序之外的任何其他内容。
我非常感谢任何有关该问题的相关信息。我只是想创建一个简单的 Facebook 应用程序来打印用户的姓名。
一般来说,在获取用户的访问 token 后,我可以执行以下操作:
FacebookClient facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN);
User user = facebookClient.fetchObject("me", User.class);
out.println("User name: " + user.getName());
我的问题是如何正确获取用户的访问 token ?在我在帖子顶部显示的信息中,它表明我需要提出 2 个请求。第一个用于代码,另一个用于访问 token 。对访问 token 的请求实际上向用户泄露了我的应用程序 key ,因为每次我将他转发到不同的页面时,用户都可以轻松查看获取和设置参数。
所以我想我在这里迷路了。
请帮忙! :)
谢谢
评论后更新
根据这些说明,我需要两次重定向用户的页面。首先获取代码,然后获取访问 token 。用户可以看到这两个重定向,因此他可以轻松地从 get 参数中看到 facebook 应用程序 key 和 secret key 。我如何确保这些步骤对用户 Conceal ?
最佳答案
正如评论中所述,这些是您访问 Facebook 的图形 API 所需执行的步骤。但是,回答你的第二个问题:
"How do I make sure that these steps are hidden from the user?"
用户的浏览器应仅执行第一个请求。目的是Facebook希望确保它是用户Facebook身份的唯一授权提供者。根据您编写的应用程序,您可以使用重定向 URL 指向您指定的默认重定向 URL,也可以在您的网站上指定用于检索 token 的自定义 URL。第一种方法通常由独立应用程序使用,例如可以控制浏览器处理重定向的移动设备。第二种方法将用于基于 Web 的自定义应用程序。收到访问 token 后,您将在代码中执行第二个操作(使用您最喜欢的 http api),而不是通过浏览器。 access_token url 上的重定向与authentication-url 上指定的重定向url 进行比较。 Facebook 仅将其用于验证,不会在成功完成请求时执行实际重定向。
以下是高级步骤:
- 将用户的浏览器重定向到指定适当的redirect_uri 的身份验证网址
- 从重定向的浏览器请求中检索验证 token
- 使用您首选的 HTTP 框架执行 access_token 检索(无需用户输入)
- 解析结果并检索访问 token
- 带有 token 的初始restfb并根据需要使用
关于java - restfb:用 java 编写 facebook 应用程序(使用新的图形 api),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248484/