我正在一个以Facebook页面作为其数据源之一的项目上工作。它不使用GUI定期从其中导入一些数据。然后,我们使用Web应用程序显示我们已经拥有的数据。

并非所有信息都是公开的。这意味着我必须访问一次数据然后保存它。但是,我不知道该过程,也还没有找到好的教程。我想我需要一个access_token,如何逐步从用户那里获得它?用户是Facebook页面的管理员,他是否必须在页面中添加一些我们的FB应用?

编辑:感谢@phwd提供提示。我制作了一个教程,即使在offline_access不再存在的情况下,也如何获取永久页面访问令牌。

编辑:我刚刚在这里找到了答案:服务器支持FB的持久FB访问令牌页面信息

评论

服务器获取FB页面信息的持久FB访问令牌的可能重复项

看起来确实如此。我的头衔更好,他的问题更详细,我们都接受了大致相同的答案。

#1 楼

按照Facebook扩展页面令牌文档中列出的说明,我能够获得一个不会过期的页面访问令牌。

除非另有说明,否则我建议对所有这些步骤使用Graph API Explorer。

0。创建Facebook应用程序

如果您已经有一个应用程序,请跳至步骤1。


转到“我的应用程序”。
单击“ +添加新的应用”。
设置网站应用。

您无需更改其权限或其他任何内容。您只需要一个不会消失的应用程序,然后再完成访问令牌。

1。获取用户短期访问令牌


转到Graph API资源管理器。
选择要为其获取访问令牌的应用程序(在“应用程序”下拉列表中菜单,而不是“我的应用”菜单。)
单击“获取令牌”>“获取用户访问令牌”。
在弹出窗口的“扩展权限”标签下,选中“ manage_pages” 。
单击“获取访问令牌”。
从Facebook帐户授予访问权限,该帐户有权管理目标页面。请注意,如果该用户失去访问权限,则最终的,永不过期的访问令牌很可能会停止工作。

出现在“访问令牌”字段中的令牌是您的短期访问令牌。

2。生成长期访问令牌

按照Facebook文档中的说明进行操作,向GET请求发送



https://graph.facebook.com/v2 .10 / oauth / access_token?grant_type = fb_exchange_token&client_id = {app_id}&client_secret = {app_secret}&fb_exchange_token = {short_lived_token}


输入应用程序的ID和密码以及生成的短期令牌在上一步中。

您不能使用Graph API Explorer。由于某种原因,它卡在了这个请求上。我认为这是因为响应不是JSON,而是查询字符串。由于这是一个GET请求,因此您只需转到浏览器中的URL即可。

响应应如下所示:


{“ access_token”:“ ABC123”,“ token_type”:“ bearer”,“ expires_in”:5183791}


“ ABC123”将是您的长期访问令牌。您可以将其放入访问令牌调试器中进行验证。在“过期”下,其内容应类似于“ 2个月”。

3。获取用户ID

使用寿命长的访问令牌,向


https://graph.facebook.com/v2.10/发出GET请求。我吗?access_token = {long_lived_access_token}


id字段是您的帐户ID。下一步将需要它。

4。获取永久页面访问令牌

向GET请求


https://graph.facebook.com/v2.10/{account_id}/accounts? access_token = {long_lived_access_token}


JSON响应应具有data字段,该字段下是用户有权访问的项目数组。找到您想要永久访问令牌的页面的项目。 access_token字段应具有您的永久访问令牌。复制它并在访问令牌调试器中对其进行测试。在“过期”下应显示“从不”。

评论


Facebook搞砸了,所以它不再起作用了。 :-(在上述步骤1.5之后(单击“获取访问令牌”按钮),以下对话框中出现红色警告,指出“提交登录审阅-以下某些权限尚未被Facebook批准使用”,并且下方同时显示带有文本“这不会让应用程序发布到Facebook”的挂锁。因此,应在上面的步骤1.5和1.6之间插入一个新步骤,显示为“对您的应用程序进行很多繁琐的操作,然后将其提交以供审查,然后祈祷并等待。” :-(任何人都知道一种纯测试应用程序的解决方法吗?

– QuestionOverflow
15年7月27日在0:48

对于到达最后一步的任何人,浏览器都将返回:消息:“(#100)尝试访问节点类型(Page)上不存在的字段(帐户)”,键入:“ OAuthException”,代码:100转到FB访问令牌调试器并测试您的long_lived_access_token。一致地,我看到几分钟后,如果您返回并重新检查long_lived_access_token,则FB访问令牌调试器将指示该令牌是永久的(过期:永不)

–副教授猎鹰
15年9月22日在19:24

我发誓,如果我还没有阅读这个答案,我仍然会用短暂的令牌将我的头撞到墙上。不幸的是,最后一部分无法正常工作...我得到了(#100 )尝试访问节点类型(Page)上不存在的字段(帐户)错误...无法继续执行步骤5 ...仍然,谢谢... LE:请查看@Vlasec提供的答案的最后一部分。您可以通过查询/ {pageId}?fields = access_token&access_token = {long_lived_access_token}来获得永久访问令牌,因此已解决问题。

–Mujnoi Gyula Tamas
15-10-27在13:13



必须使用它作为最后一步来获取我的永久访问令牌,因为它说“帐户”不存在,即使对于v2.7:https://graph.facebook.com/v2.7/{page_id}?fields= access_token&access_token = {long_lived_access_token}

– Reado
16 Jul 23'9:07



在最后一步中,我得到以下异常{“ error”:{“ message”:“语法错误\”预期的字符串结尾,而不是字符11的\“?\”。\“:access_toke \ u200c \ u200bn” ,“类型”:“ OAuthException”,“代码”:2500,“ fbtrace_id”:“ A8 + gtSaShIO”}}任何人都知道如何解决它???

–露西
16-09-27在11:04



#2 楼

这是我仅使用Graph API Explorer和访问令牌调试器的解决方案:


Graph API Explorer:


从右上角的下拉菜单中选择您的应用
从下拉菜单(访问令牌字段的右侧)中选择“获取用户访问令牌”,然后选择所需的权限
复制用户访问令牌


访问令牌调试器:


粘贴复制的令牌并按“调试”
按“扩展访问令牌”并复制生成的长期用户访问令牌


Graph API Explorer:


将复制的令牌粘贴到“访问令牌”字段中
使用“ PAGE_ID?fields = access_token”发出GET请求
查找永久页面响应中的访问令牌(节点“ access_token”)


(可选)访问令牌调试器:


粘贴永久令牌,然后按“调试“
” Expires”应为“从不”



(已通过API版本2.9-2.11,3.0-3.1测试)

评论


没有要按的“扩展访问令牌”按钮。也许他们把它拿出来了。

– Cear Bielich
17年6月19日在20:24

我看到“扩展”按钮

–爱德华多
17年7月9日在5:31

扩展访问令牌(第2步)并再次对其进行调试之后,它应该永不过期。您可能只需通过步骤3和4。

– daniel_serretti
17年8月23日在13:48

感谢您提供这种答案,比上面的大方法更容易理解。真的很有帮助。

– Paul Laffitte
17-10-18在8:30

哦,伙计,你着火了!太谢谢了!我浪费了太多时间来找到此选项,因为我无法正确调试应用程序!

– Killuminati
17年11月15日在23:44

#3 楼

我制作了一个PHP脚本来简化它。创建一个应用程序。在Graph API Explorer中,选择您的应用并获取具有manage_pages和publish_pages权限的用户令牌。在关于页面的底部找到您页面的ID。填写配置变量并运行脚本。

<?php
$args=[
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
];

echo generate_token($args);

function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/{$userid}/accounts?access_token={$longtoken}")); // get permanent token
    foreach($r->data as $d) if($d->id==$args['pageid']) return $d->access_token;
}


评论


+1刚刚尝试过,在所有这些部分贬值的答案中,它行之有效!我喜欢这个答案,因为将来的修改很容易,只需在此处和此处进行一些编辑即可。

–Siddhant Rimal
17-4-16在14:50



抱歉,我不允许编辑此答案。因此,对于Graph API 2.9,我改写了另一个答案。

–Siddhant Rimal
17年4月25日在8:11

似乎他们用2.9更改了内容,因为这些示例都不再起作用

– Cear Bielich
17年6月19日在20:28

#4 楼

除了Vlasec答案中建议的步骤外,您还可以使用:Graph API Explorer进行查询,例如/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER


访问令牌调试器以获取有关访问令牌的信息。


评论


这不再起作用了。令牌仅持续一个小时

– flashsnake
16年1月23日在3:52



@flashsnake您是否在v2.8上进行了实际测试?令牌调试器显示Expires Never

–Bizmate
17年1月13日在8:10



我不记得了我可能已经测试过了。

– flashsnake
17年2月20日在23:31

#5 楼

使生活更加轻松的另一个PHP答案。已针对Facebook Graph API 2.9更新。只需填充并加载即可。

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$userid}?fields=access_token&access_token={$longtoken}")); // get permanent token
    if($r->id==$args['pageid']) $finaltoken=$r->access_token;
    return $finaltoken;
}
?>


附录:(可选)

从图2.9起,您可以跳过很多麻烦在调试短访问令牌后,只需单击访问令牌调试器工具底部的扩展访问令牌即可获得长访问令牌。拥有有关pageidlonglivedtoken的信息,请运行下面的php以获得永久访问令牌。

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'longlivedtoken'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$args['pageid']}?fields=access_token&access_token={$args['longlivedtoken']}"));
return $r->access_token;
}
?>


尽管第二个代码为您节省了很多麻烦,但我建议您运行第一个php代码,除非您非常着急,因为它会交叉检查pageid和userid。如果您错误地选择了用户令牌,第二个代码将无法正常工作。


感谢dw1和Rob


评论


扩展访问令牌按钮不存在,我缺少什么吗?

– Cear Bielich
17年6月19日在20:33

@CesarBielich:您必须先调试短访问令牌。当您调试简短的应用令牌时,它会显示在结果下方。由于看不到它,因此必须调试了用户访问令牌。请注意,此答案不适用于使用访问令牌。只能使用应用程序访问令牌。用户访问令牌不能是永久的。它们最多可以生成长令牌。

–Siddhant Rimal
17年6月21日在14:58

@CesarBielich我认为您在这里有些困惑。您可以为用户,应用程序和页面创建访问令牌。您需要在应用程序字段中选择一个创建的应用程序,而不是Graph API Explorer,然后才能请求令牌。

–Siddhant Rimal
17年6月21日在15:05

@CesarBielich:如果第二种方法对您来说太混乱了,请使用第一种方法。您只需在第一个输入字段中填写内容,一切便会自动发生:)

–Siddhant Rimal
17年6月21日在15:07

抱歉,我在评论我昨晚刚刚发表的另一则帖子,哈哈。是的,由于某种原因,我无法让您的工作,并使我成为永不过期的令牌。我不得不在第二次通话中删除v2.9,这对我来说很有效。维尔德

– Cear Bielich
17年6月21日在15:42

#6 楼

我尝试了以下步骤:
https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer

获取永久页面访问令牌


转到Graph API Explorer
在应用程序中选择您的应用程序

将长期存在的访问令牌粘贴到Access Token

Access旁边令牌,选择您想要访问令牌的页面。访问令牌显示为新字符串。
单击i查看此访问令牌的属性
再次单击“在访问令牌工具中打开”按钮以打开“访问令牌调试器”工具以检查属性

一个提示,仅当页面语言为英语时,它才对我有用。

评论


这家伙!!! 5种虚拟啤酒。这可以代替已批准答案的步骤5。图形版本2.8

–根-
17年3月13日在16:21

我浪费了数周时间才能使用Facebook API。到目前为止,这是我遇到的最混乱和不一致的令牌。该解决方案仍然可以正常使用。.2017年10月

–user919426
17-10-14在13:41

#7 楼

如果仅请求页面数据,则可以使用页面访问令牌。您只需要授权一次用户即可获得用户访问令牌。将其有效期延长至两个月,然后请求该页面的令牌。在方案5中对此进行了全部说明。请注意,获取的页面访问令牌仅在用户访问令牌有效的情况下才有效。

评论


对不起,也许我还不够清楚。我已经阅读了有关令牌的信息,我只需要学习如何向用户请求权限并将令牌传输到我的应用程序。看来我需要创建一些Facebook“应用”,其唯一目的是请求权限,对吗?

–Vlasec
13年6月20日在7:51

@Viasec更正获取访问令牌的唯一方法是通过应用程序,如此处所述developer.facebook.com/docs/facebook-login

–phwd
13年6月20日在11:50

谢谢,我一定以某种方式无视了它,我认为它在APIs部分中的某个地方,这是错误的。我会看的,希望它能回答我的问题。

–Vlasec
13年6月20日在12:56

#8 楼

在获得永久访问令牌的同时,我按照Donut的说明执行了5个步骤。但是在第5步中,在生成永久访问令牌时,它会返回长期访问令牌(有效期为2个月),而不是永久访问令牌(永不过期)。我注意到的是Graph API的当前版本是V2.5。如果您尝试使用V2.5获取永久访问令牌,则授予永久访问令牌。请尝试使用V2.2进行API调用(如果您无法在图形API资源管理器中更改版本,请点击API调用https: //graph.facebook.com/v2.2/ {account_id} / accounts?access_token = {long_lived_access_token}(位于V2.2的新标签中),那么您将获得永久访问令牌(永不过期)

评论


返回api版本以获得结果只会在我发现的将来导致更多工作,尤其是因为API版本会在一段时间后过期。

– SlickRemix
16-09-17在2:22

它返回null :(我们如何获得页面访问令牌?

–南希·塔卡(Nancy thakkar)
16 Dec 15'9:51

#9 楼

除了提到的方法外,值得一提的是,对于服务器到服务器的应用程序,您还可以使用这种形式的永久访问令牌:
app_id | app_secret
这种类型的访问令牌称为App Token。通常可用于调用Graph API并查询应用程序后端中的公共节点。
此处提到:https://developers.facebook.com/docs/facebook-login/access-tokens

评论


是否允许任何形式的页面访问?我认为没有,在那种情况下,它并不能真正回答问题。

–Vlasec
2015年3月9日15:12

@Vlasec它允许您访问公开帖子上的评论

–阿里·加贾尼(Ali Gajani)
17年2月2日,下午2:02

尽管对于某些人来说这可能就足够了,但它无法回答问题。

–Vlasec
17年2月6日在13:29

#10 楼

感谢@donut,我设法在JavaScript中获得了永不过期的访问令牌。

// Initialize exchange
fetch('https://graph.facebook.com/v3.2/oauth/access_token?grant_type=fb_exchange_token&client_id={client_id}&client_secret={client_secret}&fb_exchange_token={short_lived_token}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Get the user data
    fetch(`https://graph.facebook.com/v3.2/me?access_token=${json.access_token}`)
    .then((data) => {
        return data.json();
    })
    .then((userData) => {
        // Get the page token
        fetch(`https://graph.facebook.com/v3.2/${userData.id}/accounts?access_token=${json.access_token}`)
        .then((data) => {
            return data.json();
        })
        .then((pageToken) => {
            // Save the access token somewhere
            // You'll need it at later point
        })
        .catch((err) => console.error(err))
    })
    .catch((err) => console.error(err))
})
.catch((err) => {
    console.error(err);
})


,然后我使用了这样保存的访问令牌

fetch('https://graph.facebook.com/v3.2/{page_id}?fields=fan_count&access_token={token_from_the_data_array}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Do stuff
})
.catch((err) => console.error(err))


我希望有人可以修剪这段代码,因为它有点乱,但这是我唯一想到的方法。

#11 楼

如果您有facebook的应用程序,则可以尝试使用app-id和app-secret。

喜欢:

access_token={your-app_id}|{your-app_secret}


它不会。不需要经常更改令牌。

#12 楼

由于所有较早的答案都是旧的,并且由于来自facebook的政策不断变化,其他提及的答案可能不适用于永久令牌。
经过大量调试,我可以使用以下步骤获取永不过期的令牌:
图形API资源管理器:

打开图形API资源管理器,并在右侧的下拉框中选择要获取访问令牌的页面,单击发送按钮并复制结果access_token,将是一个短暂的令牌
复制该令牌并将其粘贴到访问令牌调试器中,然后按调试按钮,在页面底部单击扩展令牌链接,这会将您的令牌有效期延长至两个月。
复制扩展的令牌,并将其与您的pageId粘贴在下面的URL中,然后在浏览器中命中URL
https://graph.facebook.com/{page_id}?fields=access_token&access_token={long_lived_token }

U可以在访问令牌调试器工具中检查该令牌并验证Expires字段,该字段将永远不会显示。

就这样

评论


您好,谢谢您的回答。看起来很简单。也许您可以提供使用Facebook API URL而不是其用户界面的答案?例如,当客户允许应用程序访问页面时,我7年前开发的软件应该可以自动执行所有操作。

–Vlasec
10月12日14:31

目前,我不再积极从事与Facebook相关的任何事情。但是,如果您确定您的答案是解决方案,那么我可以将其标记为此类,并检查其支持票,并在其他情况下保持其原样。

–Vlasec
10月12日14:32

@Vlasec答案是正确的,并且在生产中使用相同的令牌。

–卡马尔·塞拉瓦特
12月21日17:19

#13 楼

达到应用程序请求限制(#4)-FB API v2.1和更高版本

此答案使我想到了“对我们来说是最终答案”,因此它与之非常相关,因此我将其附加在这里。尽管与上述内容有关,但它有所不同,并且FB似乎简化了流程。

FB将API滚动到v 2.1时,我们站点上的共享计数停止工作。在我们的情况下,我们已经有一个FB APP,而我们没有使用FB登录。因此,我们需要做的是获得一个FB APP令牌来发出新请求。这是从2016年8月23日开始。


转到:https://developers.facebook.com/tools/explorer


选择api版本,然后使用GET并粘贴以下内容:

/oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials


您将要从应用程序页面获取应用程序ID和应用程序密钥。 FB Apps开发人员主页


运行图形查询,您将看到:

{
   "access_token": "app-id|app-token",
   "token_type": "bearer"
}


其中
"app-id"
"app-token"
将是您FB应用程序页面中的应用程序ID,以及您刚刚收到的生成的FB应用程序哈希。
接下来,测试您的新APP访问令牌:FB访问令牌测试器

您应该看到,通过将
"app-token"
粘贴到令牌测试器中,这是一个基于应用的令牌,没有到期日期/时间。

在我们的示例中,我们使用的是FB js sdk,因此我们将调用更改为像这样(请注意,此方法仅获取共享计数,而不是像过去那样共享共享和评论计数):

FB.api(
    '/','GET',{
    // this is our FB app token for our FB app 
        access_token: FBAppToken,
        "id":"{$shareUrl}","fields":"id,og_object{ engagement }"
}


现在可以正常工作了。这需要大量的搜索并与FB一起发布了正式的错误报告,以确认我们必须开始向FB api发出标记化请求。顺便说一句,我确实要求他们(FB)在错误代码(#4)上添加一条线索,其中提到了令牌化的请求。

我刚刚从我们的一位开发人员那里得到了另一份报告,我们的FB评论由于对令牌化请求的新需求,计数也被打破,因此我将相应地进行更新。

评论


登录并允许该应用访问的始终是该应用的用户。无论如何,这似乎并没有创建页面访问令牌,因此我认为这不是该问题的有效答案。有趣的是-也许自己做一个Q / A?

–Vlasec
16年9月2日在14:09

#14 楼

这些示例中有许多不起作用,不确定是否是因为2.9v出来了,但我还是在头。无论如何,我采用了@ dw1版本,并在@KFunk视频的帮助下对其进行了一些修改,并使其在2.9版中为我工作。希望对您有所帮助。

$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r = json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/{$args['pageid']}?fields=access_token&access_token={$longtoken}")); // get user id
    $finaltoken=$r->access_token;
    return $finaltoken;
}


评论


代码段不错,但是这个问题不是关于如何在PHP中进行,而是关于如何使用API​​本身,也可以在Java或.NET中完成。例如,我需要用Java来做。对于不使用PHP的用户,伪代码或分步指南将更有用。

–Vlasec
17年7月11日在13:19

@Vlasec我认为这个PHP代码段非常接近任何伪代码,并且非常容易理解。 Casar仅使用了facebook已经提供的一些API。其余的内容不言自明。

–Siddhant Rimal
18年4月10日在4:20

#15 楼

从2020年4月开始,我以前永久使用的页面令牌开始在1到12个小时之间到期。我开始使用具有manage_pages权限的用户令牌来实现先前的目标(轮询页面的事件)。这些标记似乎是永久性的。

我基于此帖子中的信息创建了一个python脚本,该脚本托管在github.com/k-funk/facebook_permanent_token上,以跟踪所需的参数,以及哪些方法可以获取永久令牌。

#16 楼

我根据甜甜圈的答案创建了一个小的NodeJS脚本。将以下内容存储在名为get-facebook-access-token.js的文件中:
const fetch = require('node-fetch');
const open = require('open');

const api_version = 'v9.0';
const app_id = '';
const app_secret = '';
const short_lived_token = '';
const page_name = '';

const getPermanentAccessToken = async () => {
  try {
    const long_lived_access_token = await getLongLivedAccessToken();
    const account_id = await getAccountId(long_lived_access_token);
    const permanent_page_access_token = await getPermanentPageAccessToken(
      long_lived_access_token,
      account_id
    );
    checkExpiration(permanent_page_access_token);
  } catch (reason) {
    console.error(reason);
  }
};

const getLongLivedAccessToken = async () => {
  const response = await fetch(
    `https://graph.facebook.com/${api_version}/oauth/access_token?grant_type=fb_exchange_token&client_id=${app_id}&client_secret=${app_secret}&fb_exchange_token=${short_lived_token}`
  );
  const body = await response.json();
  return body.access_token;
};

const getAccountId = async (long_lived_access_token) => {
  const response = await fetch(
    `https://graph.facebook.com/${api_version}/me?access_token=${long_lived_access_token}`
  );
  const body = await response.json();
  return body.id;
};

const getPermanentPageAccessToken = async (
  long_lived_access_token,
  account_id
) => {
  const response = await fetch(
    `https://graph.facebook.com/${api_version}/${account_id}/accounts?access_token=${long_lived_access_token}`
  );
  const body = await response.json();
  const page_item = body.data.find(item => item.name === page_name);  
  return page_item.access_token;
};

const checkExpiration = (access_token) => {
  open(`https://developers.facebook.com/tools/debug/accesstoken/?access_token=${access_token}&version=${api_version}`);
}

getPermanentAccessToken();

填充常量,然后运行:
npm install node-fetch
npm install open
node get-facebook-access-token.js

运行脚本后,页面是在浏览器中打开,显示令牌以及令牌的有效期。

#17 楼

我找到了这个工具的确有用的答案。

当您阅读本文时,希望这个答案仍然有效。

评论


好。甜甜圈的答案仍然有效,还是需要一些额外的步骤?

–Vlasec
18年8月8日在16:41