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

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 天的有效期。

谢谢

1个回答

3
我也想在不创建应用程序的情况下访问数据。 我尝试了很多方法,但最终只能为此创建一个应用程序。 因此,您必须创建一个应用程序。
另外,如果您查看开发人员网站,它说他们在2012年12月删除了“offline_access”权限。 请参见:https://developers.facebook.com/roadmap/offline-access-removal/。 因此,那时他们引入了长期访问令牌。 他们还说:“如果您想刷新仍然有效的长期访问令牌,则必须首先获取新的短期用户访问令牌,然后调用下面的相同端点。”
因此,您需要再次获取短期访问令牌,并使用短期访问令牌获取长期访问令牌。 要获取长期访问令牌,您可以发送以下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();

希望能有所帮助


在客户端中拥有应用程序密钥真的是一个非常糟糕的想法...你可能需要从服务器端来完成这个操作。 - mpowered
@mpowered +1。完全同意。我的只是客户端演示应用程序,所以我没有选择。 - Shobhit Puri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接