【发布时间】:2011-07-12 00:47:56
【问题描述】:
我正在尝试使用带有 RestFB 的 Java Tomcat 编写一个 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 应用程序来打印用户的姓名。
一般来说,在我获取用户的访问令牌后,我可以执行以下操作:
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