身份验证Facebook的广告api

问题描述:

我需要创建一个Java应用程序,每天在数据库中存储来自商业帐户的广告名称。身份验证Facebook的广告api

这些都是采取的步骤:
-I加入Facebook的业务访问他们的广告帐户
-I登记在developers.facebook.com的应用程序。 -Got从https://developers.facebook.com/tools/debug/accesstoken/ 访问令牌 - 得到了来自该应用程序面板

应用程序的秘密这是代码片段:

public static final String ACCESS_TOKEN = [the token from above]; 
public static final Long ACCOUNT_ID = [the business account it]; 
public static final String APP_SECRET = [the scret from 
public static void main(String...args) throws Exception { 
      APIContext context = new APIContext(ACCESS_TOKEN, APP_SECRET); 
      AdAccount account = new AdAccount(ACCOUNT_ID, context);  
System.out.println(account.getAds().execute().getRawResponseAsJsonObject()); 
     } 

我得到以下错误:

com.facebook.ads.sdk.APIException$FailedRequestException: {"error":{"message":"(#273) This Ads API call requires the user to be admin of the ad account. User is not admin on ad account XXXXXXXX.","type":"OAuthException","code":273,"fbtrace_id":"GD30f+ON/k4"}}

我有以下问题:

1 - 为什么我需要管理员权限才能列出我可以看到的相同广告他的广告管理页面?
2 - 如果我的用户失去了访问企业帐户的权限,但是我希望Java仍能正常工作,该怎么办?其他用户仍可以运行Java代码吗?
3-上面的描述和代码有什么不对吗?
4 - 如何生成永久令牌而不是临时令牌?

我对答案有点迟,但我遇到了与Facebook Ads SDK for Python相同的问题。我调查了这个问题的原因,它似乎与Facebook应用程序的“层”a.k.a. access levels有关。

默认情况下,所有创建的应用程序都具有“开发”访问级别,对于您没有管理员访问权的程序化访问广告帐户存在很多限制。从Access and Authentication页营销API文档的下面引用说明它非常简单(帐户限制,表中的开发访问级别项):

Up to 5 accounts in the account list associated with your app. API calls from app admins or developers and on behalf of ad account admins or advertisers.

基本访问级别:

25 ad accounts, defined by the account list associated with your app.

标准访问级别:

Manage unlimited ad accounts with Marketing API app

总结上述引言,您必须获得标准访问级别,才能完全以编程方式访问您的应用程序的数据y广告帐户没有任何限制。

以上连结说明如何为你的应用程序的标准访问(这包括通过Facebook员工性能保证和审查

要准确地解决您的问题。

  1. 上面刚刚解释
  2. 如果您在您的应用中实施Facebook登录并获得标准访问权限,那么任何用户都可以使用应用登录并授予必要的权限(至少为ads_management之一)。见corresponding docs
  3. 我不是一个Java程序员,但你得到APIException它只是意味着你得到的代码虽然对你没有获得访问级别概念,使API端点拒绝处理您的请求
  4. 个人没有处理了这个,但退房this SO question

希望我还不算太晚,我的解释会帮助你。