Facebook - 如何获得永久用户访问令牌[重复]

Posted

技术标签:

【中文标题】Facebook - 如何获得永久用户访问令牌[重复]【英文标题】:Facebook - how to get permanent user access token [duplicate] 【发布时间】:2013-02-06 03:13:51 【问题描述】:

我的公司有一个公司 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】:

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

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

希望对你有帮助

【讨论】:

在客户端拥有这样的应用程序机密真是个坏主意……您可能希望从服务器端执行此操作。 @mpowered +1。完全同意。我的是纯粹的客户端演示应用程序,所以我别无选择。

以上是关于Facebook - 如何获得永久用户访问令牌[重复]的主要内容,如果未能解决你的问题,请参考以下文章

存储用户的 Facebook 访问令牌

facebook:永久页面访问令牌?

Android Facebook通过访问令牌获取登录的电子邮件地址

uiwebview 如何获得访问令牌以喜欢 facebookpage(通过 iFrame)?

Facebook 应用(非用户)访问令牌过期

如何获取访问令牌? (Reddit API)