Php 使用ads_read生成Facebook访问令牌

Php 使用ads_read生成Facebook访问令牌,php,facebook,facebook-ads-api,Php,Facebook,Facebook Ads Api,我想通过Facebook广告API获取有关活动和广告的Facebook统计数据 我已经创建了一个ID和secret的应用程序,添加了营销API,现在我可以生成一个具有ads_读取权限的访问令牌,有效期为2个月 有什么方法可以避免每隔一个月手动点击该按钮 我试过这个电话: $tokenUrl='1〕https://graph.facebook.com/v2.8/oauth/access_token?client_id=' . $应用程序id。”&客户机_secret='$“你的秘密。”&授予\类型

我想通过Facebook广告API获取有关活动和广告的Facebook统计数据

我已经创建了一个ID和secret的应用程序,添加了营销API,现在我可以生成一个具有ads_读取权限的访问令牌,有效期为2个月

有什么方法可以避免每隔一个月手动点击该按钮

我试过这个电话:

$tokenUrl='1〕https://graph.facebook.com/v2.8/oauth/access_token?client_id=' . $应用程序id。”&客户机_secret='$“你的秘密。”&授予\类型=客户\凭证&范围=ads \读取'

这给了我一个如下的访问令牌:680012345678976 | aIDrLVvFqHXDzl6538RLUF4S9C4,它在不支持get请求的情况下不起作用


手动生成的令牌长度为164个字符。

您可以通过从服务器发出请求,将短生命令牌用于长生命令牌,即使不过期

GET https://graph.facebook.com/oauth/access_token?  
   grant_type=fb_exchange_token&         
   client_id={app-id}&
   client_secret={app-secret}&
   fb_exchange_token={short-lived-token} 
请注意,即使设置为永不过期的令牌也可能被用户失效,例如,如果用户更改FB密码或完全删除您的应用程序

有关更多详细信息,请参阅我所做的:

1.打电话

https://www.facebook.com/v2.8/dialog/oauth?client_id=
<APP_ID>&redirect_uri=<REDIRECT_URI>&scope=ads_read
然后单击“允许”后,我将被重定向到

<REDIRECT_URI>/?code=<AUTHORIZED_CODE>
2.将授权代码交换为访问令牌

https://graph.facebook.com/v2.8/oauth/access_token?client_id=<APP_ID>&redirect_uri=<REDIRECT_URI>&client_secret=<CLIENT_SECRET>&code=<AUTHORIZED_CODE>
您的重定向uri应以/e结尾

我通过在浏览器中手动复制和粘贴来尝试这一点,但是自动请求/响应应该会得到相同的结果


参考:

它似乎不起作用:没有用户访问令牌指定短期令牌将在大约两小时内过期。如果您有一个60天后到期的令牌,则该令牌已经是延长/长寿令牌。否。我仍然相信答案是正确的,因为我使用这个请求将登录令牌交换为过期的令牌:从不。我现在手工做这个请求只是为了检查,它确实按照预期工作@allanth,你有没有尝试过在PHP之外使用REST客户端,而不使用FB SDK来执行请求?@David,我在浏览器中尝试过。这是一种错误的访问令牌。非常混乱。不管怎样,我真的不在乎过期。如果可能的话,我对通过编程方式获取/生成令牌更感兴趣。@David,你能告诉我更多关于这方面的信息吗。?我可以在60天内获取访问令牌,但我想延长这一期限,因为我想通过cron下载带有访问令牌的用户ads洞察。这太令人沮丧了。同样的问题。我必须创建一个令牌,它有一个关联的用户,这就是我,因为这是你应该做的。但这意味着,如果我退出Facebook,在测试我网站的Facebook登录时,它会破坏营销API的服务器端访问令牌。我应该做一个假用户吗?而且我也没有看到2个月的到期日。我从来没见过。你仍然有这个过期问题吗?我最终做的是创建一个新的应用程序,只用于营销API,而不是Facebook登录按钮+营销API。必须再次通过Facebook的所有授权。现在我有了一个令牌,它显然应该是永久的。因此,如果该用户与应用程序关联并解除关联,这可能是在测试您网站的“Facebook登录”期间-然后该访问令牌为空并无效。您还可以在此处验证最终令牌的“所有者”。我想这意味着您应该创建一个单独的服务器端和客户端应用程序,如果您正在访问服务器端读取的广告。