2011-06-01 87 views
0

我试图让我的Facebook墙帖的JSON对象显示在我的网站上,但它似乎对于这样一个简单的任务显得很荒谬。身份验证在我的网站上显示我的墙

我是否需要实现服务器端重定向,然后将数据发回“假装”成为用户,以便我可以获得令牌或者我在这里误解了某些东西?

因为我有一个API密钥&秘密等事实,我该如何请求我的Wall Stream的JSON对象?目前我无法弄清楚如何将这些细节转化为一个合适的access_token,可以实际使用FacebookClient.Get("Me", parameters)

我读过的地方,我可以得到一个infinite session key永远不会过期,但遵循给定的步骤here只是在第二步导致一个错误。

我读过大量的文档,并试图找到示例,但几乎我发现的所有内容都是在验证后启动的。

任何帮助,非常感谢。

回答

4

首先,你需要得到一个访问令牌(没有得到这个)。这是通过OAuth对话框完成的,用户登录并提供所需的权限。您将不得不请求“offline_access”和“read_stream”权限来执行您正在尝试的操作。获取access_token非常简单。按照这里的指令:http://osnapz.wordpress.com/2010/04/23/using-asp-net-with-facebooks-graph-api-and-oauth-2-0-authentication/

,并阅读了Facebook的文档:http://developers.facebook.com/docs/authentication/

你将不得不令牌地方保存你的访问供以后使用(这是无限的会话密钥)

后你得到的访问令牌,您可以直接调用图API:

https://graph.facebook.com/me/feed/?access_token=YOUR-TOKEN-HERE

或者您可以使用Facebook C#SDK(推荐)。如果您发布的链接已过时,Facebook不会很快支持该方法。

更新 - 获得一个访问令牌手动方式:

既然你只对你的数据感兴趣,所以你只需要获得访问令牌一次。当然,如果您更改密码,则必须重新执行此操作。

我将详细介绍一种获取令牌的手动方式。

  1. 确保您使用的是Firefox。它实际上显示JSON字符串。
  2. 导航到此URL。添加你的App ID,回调URL(这应该与你注册时的域名相匹配)。我添加了很多权限。

https://www.facebook.com/dialog/oauth?display=popup&client_id=YOUR-APP-ID&redirect_uri=YOUR-CALLBACK-URL&scope=offline_access,read_stream,email,read_insights,user_events,user_groups,user_interests,user_likes,user_location,user_notes,user_photo_video_tags,user_photos,user_relationships,user_religion_politics,user_status,user_videos,user_website,user_work_history,read_friendlists,read_requests,friends_likes,friends_location,friends_notes,friends_photo_video_tags,friends_photos,friends_relationships,friends_religion_politics,friends_status,friends_videos,friends_website,friends_work_history,user_checkins,friends_checkins

  1. 一旦你验证和 “允许”,Facebook将重定向到您的回调URL是 “代码” 参数。记下这个参数。

  2. 现在调用另一个URL,添加您的应用程序ID,API秘密和代码。

https://graph.facebook.com/oauth/access_token?client_id=YOUR-APP-ID&redirect_uri=YOUR-CALLBACK-URL&client_secret=API-SECRET&code=CODE-YOUR-COPIED-BEFORE

  1. 调用上面的网址就会显示在浏览器中访问令牌。保存此访问令牌。现在您可以使用此令牌代表您进行API调用。

  2. 请记住,如果您更改密码,您将再次经历此过程。

这是一种手动方式,只适用于您只关心数据的场景。我这样做是为了测试目的。

+0

感谢您的建议dotnetster我会给它一个去。 我不明白为什么开发人员必须通过登录过程,当他们的数据(即涉及他们的API密钥等)。我不希望人们发表评论或访问他们的数据,我只想要在VB.Net中请求我的墙数据为JSON。 能不能在我的ASP.Net中使用ID/API密钥/密码组合,从而验证自己,然后获取JSON(这是我目前使用的所有其他API的工作方式)? 这似乎是如此不必要的复杂,我质疑我是否完全误解了! – 2011-06-02 00:24:17

+0

该API旨在供开发人员开发为其用户社区提供服务的应用程序。因此,安全功能。 API密钥/秘密适用于您的应用程序,而不是您的用户帐户。在您可以访问您的信息之前,您仍然需要经过相同的身份验证程序。 – dotnetster 2011-06-02 12:55:27

+0

我会建议另一个选项,一个非常手动的。 – dotnetster 2011-06-02 13:05:03