1

我需要創建一個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 - 如何生成永久令牌而不是臨時令牌?

回答

1

我對答案有點遲,但我遇到了與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

希望我還不算太晚,我的解釋會幫助你。