我尝试设置一个每天早上7点运行的脚本,并从Facebook获取我们组织的广告数据。我得到了实际的Python脚本完全正常工作: (我当然使用了我的实际应用ID,应用密码,帐户和用户访问令牌而非X,并将其存储在csv中,但没有复制该部分代码,因为它不是& #39; t相关)
from facebookads.objects import AdAccount
from facebookads.api import FacebookAdsApi
import pandas as pd
my_app_id = 'XXX'
my_app_secret = 'XXX'
my_access_token = 'XXX'
FacebookAdsApi.init(my_app_id, my_app_secret, my_access_token)
account = AdAccount('act_XXX')
params = {
'data_columns':['adgroup_id','date_start','date_stop','campaign_name','reach', 'frequency', 'impressions', 'clicks', 'unique_clicks', 'ctr', 'unique_ctr', 'spend', 'cpm','cpp', 'cpc', 'actions'],
'date_preset': 'last_90_days',
}
stats = account.get_report_stats(params=params);
print (stats)
问题是此令牌每60分钟到期一次。我需要一种方法,我不必每天修改这个程序,以便在Facebook上进行身份验证。我意识到上面的标记是USER标记。我已经尝试过App Token(这是" app_id | app_secret")我甚至得到了Python通过请求将它提供给我:
import requests
r = requests.get("https://graph.facebook.com/oauth/access_token? client_id={{my_id}}&client_secret={{my_secret}}&grant_type=client_credentials")
#print r.headers
token = r.content
print (token)
但它不会将此作为实际令牌。当我手动输入USER令牌时,它只会向我提供广告数据。如果我正确了解情况,我需要
1)永久令牌(不要认为这存在)
或2)每次运行Python脚本时从Facebook API请求(用户?)令牌的方法。
这是关于访问令牌的Facebook页面(我从中获取了代码)https://developers.facebook.com/docs/facebook-login/access-tokens我知道有延长的60天令牌,但由于我们仍然需要每60天手动进入并更改一次。我们的想法是让脚本自动运行,而不必为每次运行重新编写脚本。
提前致谢。