我的公司有一个企业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天内有效
感谢
答案 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();
希望有所帮助