4

我的公司有一个公司 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= 我使用访问令牌调试器验证了令牌。令牌有效期为 60 天。要获取页面令牌,我使用了 url:graph.facebook.com/me/accounts?access_token= 我获得了我的应用页面的令牌。我在工具中验证了这个令牌,它的有效期只有 60 天

谢谢

4

1 回答 1

3

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

此外,如果您看到开发者网站,它会说他们在 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();

希望能帮助到你

于 2013-02-21T00:03:53.260 回答