Facebook - 如何获得永久用户访问令牌

时间:2013-02-20 22:46:38

标签: facebook access-token

我的公司有一个企业Facebook帐户,他们在不同的专辑中发布活动照片。我的要求是从Facebook专辑中获取所有照片并在我们的公司网站上显示。我可以获取照片,但用户访问令牌仅在60天内有效,这意味着每隔两个月我将必须登录公司的公司Facebook帐户,重新生成令牌并在我的应用程序中更新令牌。

有没有办法生成永久访问令牌?或者以任何方式在我的应用程序级别重新生成令牌(不显示登录对话框)?

有没有其他方法可以在不创建应用的情况下获取照片?

我按照以下步骤操作:https://www.facebook.com/dialog/oauth?client_id=%3CCLIENT_ID%3E&scope=manage_pages&redirect_uri=我从此API调用中获取了代码。然后我得到令牌如下:https://graph.facebook.com/oauth/access_token?client_id=& redirect_uri =& client_secret =& code =我使用Access令牌调试器验证了令牌。令牌有效期为60天。要获取页面令牌,我使用了url:graph.facebook.com/me/accounts?access_token=我获得了应用页面的令牌。我在工具中验证了这个令牌,它仅在60天内有效

感谢

1 个答案:

答案 0 :(得分:3)

我还想在不创建应用的情况下访问数据。我尝试了很多东西,但最后我不得不为了它创建app。所以你必须创建一个应用程序。

此外,如果您看到开发者网站,则表示他们已于2012年12月删除了“offline_access”权限。请参阅此处:https://developers.facebook.com/roadmap/offline-access-removal/。因此,他们带来了长期存取令牌。他们还说,我引用,“如果你想刷新一个仍然有效的长期存在的access_token,你必须首先获得一个新的短期用户access_token,然后调用下面的同一个端点。”

因此,您必须再次获取短期访问令牌,并使用短期令牌获取长期令牌。要获得长期访问令牌,您可以发送如下HTTP请求:

var short_access_token; //Get this
var xhr = new XMLHttpRequest();
var f_url = "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=CLIENT_ID&client_secret=APP_CLIENT_SECRET&fb_exchange_token="+short_access_token;

xhr.open("GET", f_url , true);
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        obj = xhr.responseText;
        long_token =  obj.split('=')[1].split('&')[0];
    }
}
xhr.send();

希望有所帮助