如何使用java获取永久Facebook访问令牌

问题描述:

如果您使用Facebook图形API,则可以查看某人的所有公开信息,如果该人员将这些信息公开设置,则只需执行几项操作:打开浏览器,登录到Facebook,并知道该用户的用户ID#,例如,马克扎克伯格 - Facebook的创始人有用户ID#4,所以去: https://graph.facebook.com/4 =>你可以看到基本的信息,如姓名,年龄,位置....(想象一下你改变我在_ https://graph.facebook.com/i与我从1到100万,你可能会看到百万用户的信息,只要他们公开设置他们的信息)如何使用java获取永久Facebook访问令牌

或去到这个链接,你可以看到更多的信息,如人的最爱和教育...... 个_HTTPS://graph.facebook.com/4 =的access_token XXX XXX 一个唯一的代码,它您登录到Facebook(看多http://developers.facebook.com/docs/reference/api/

我的目标是每一次变化使用基本的Java URL去这些链接,并获得所有信息(基本上他们是文本),并将其保存到文本文件,与_https://graph.facebook.com/4没有问题,但与第二个链接问题是访问令牌代码是XXX - 每次更改或在20〜30分钟后过期,因此我无法再运行我的程序以获取更多数据。 问题是有无论如何得到一个永久访问令牌或延长它的时间更长,记住我只使用一个小的Java程序,与Facebook应用程序或任何其他事情无关。先谢谢了!

不幸的是,您无法获得永久性访问令牌,相反,您可以在访问令牌过期并请求新令牌时捕获错误。你也可能想阅读Facebook的使用条款,以确保你没有违反它。

+0

没问题,所以没办法获得永久代码,得到了你,那就是我的想法。你有任何想法或有用的链接,请问在每次发现错误时如何请求新的访问令牌?我试图搜索的这些链接看起来就像Facebook应用程序开发的那样,这不适用于我的情况。我试图收集的这个数据集仅用于统计目的,没有个人信息被公开或用于商业目的,例如:我告诉你我们有30%25岁以下的美国人,学习信息系统是女性......和类似的东西。 – 2012-04-08 23:43:33

+0

对不起,我没有。我认为你只能这样做,如果你正在使用Facebook应用程序。 (可能有一个我没有意识到的解决方法)。 – 2012-04-10 19:08:58

不能获得永久访问令牌,但在到期后续订相当容易:That文章是要走的路。神奇的网址是:

https://www.facebook.com/dialog/oauth/?client_id=YOUR_APP_ID&redirect_uri=YOUR_REDIRECT_URL&state=YOUR_STATE_VALUE&scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES 
  • client_id
    您的应用程序的ID。你需要必须注册一个Facebook应用程序,即使你正与Java或类似的“离线”工作 - 但是 - 没有必要实际编程的应用程序。只需注册应用程序,以便获得一个固定的应用程序ID(您需要它在这里),你会没事的。
  • redirect_uri
    这是重要的一步 - facebook重定向到redirect_uri中给出​​的uri,并向该uri添加“#access_token = ...”。你可以解析该URI获取令牌:

用webbrowser调用上面的链接,使用http://localhost作为redirect_uri,你会没事的。浏览器会尝试拨打http://localhost#access_token=....,但显然会失败,但您可以解析url以获取令牌。这不是一个非常简单的过程,但它适用于我。

+0

是否为你工作? – 2012-07-14 08:27:45

您可以将访问令牌的使用期限延长至60天。 你可以通过这样的:

https://developers.facebook.com/docs/facebook-login/access-tokens/

如果您从您的服务器端下面的调用,Facebook将返回您的访问令牌,这将是有效期为2个月(扩展的访问令牌):

GET /oauth/access_token? 
    grant_type=fb_exchange_token&   
    client_id={app-id}& 
    client_secret={app-secret}& 
    fb_exchange_token={short-lived-token}