kakasoo

[Meta] Application does not have permission for this action 본문

도메인/마케팅

[Meta] Application does not have permission for this action

카카수(kakasoo) 2024. 3. 26. 22:40
반응형

에러 상황

{
  "message": "Application does not have permission for this action",
  "type": "OAuthException",
  "code": 10,
  "error_subcode": 1341012,
  "is_transient": false,
  "error_user_title": "이 프로필에 대한 액세스 권한 없음",
  "error_user_msg": "이 프로필에 액세스하는 데 필요한 권한이 없습니다",
  "fbtrace_id": "(생략)"
}

 

Application does not have permission for this action는 액세스 권한이 없을 때 발생한다.

 

 

Facebook - You don't have required permission to access this profile

I'm trying to build a service that let's users create facebook ads with a custom audience based on our database of emails. Before creating the facebook ad I want to create a preview of the ad. This

stackoverflow.com

 

참고 차 내가 확인했던 스택 오버 플로우 링크를 기재한다.

만약 접근하고자 했던 리소스가 페이지라면 ( 동일한 에러라면 아마도 페이지일 것이라고 생각한다 ) 페이지를 조회해봐야 한다.

만약 접근하고자 했을 때 토큰으로 준 게 시스템 유저의 토큰이라면 시스템 유저가 페이지에 대한 권한이 없기 때문일 것이다.

 

 

그래프 API 참고 자료 v19.0: Page Agencies - 문서 - Meta for Developers

permitted_tasksarray Tasks that are assignable to this Page.

developers.facebook.com

 

 

Request Access to Assets

Business Manager may request access to an ad account or Page owned by another Business Manager. They must specify the tasks that they want to assign in the request.
Assigning a business to a Page requires a page token; for example:

 

비즈니스 관리자는 다른 비즈니스 관리자가 소유한 광고 계정 또는 페이지에 대한 액세스를 요청할 수 있습니다.
요청에서 할당하려는 작업을 지정해야 합니다.페이지에 비즈니스를 할당하려면 페이지 토큰이 필요합니다. 예를 들어 다음과 같습니다:

 

 

메타의 공식 문서를 보면, 다른 유저의 애셋에 대한 접근 권한을 요청하는 법이 나와 있는데 이 중에는 페이지에 관한 내용이 있다.

 

해결 방법

문제는 권한이 없다는 데에 있다.

자기 자신의 자산(assets)에 접근하지 못할 일은 없으니 이 문제는 아마도 API를 호출한 이가 권한을 위임 받은 자일 것이다.

이 권한을 위임 받은 자를 메타에서와 같이 에이전시(agencies) 라고 부를 것이다.

 

curl \
  -F "business=<BUSINESS_ID>" \
  -F "permitted_tasks=['ADVERTISE', 'ANALYZE']" \
  "https://graph.facebook.com/act_<AD_ACCOUNT_ID>/agencies?access_token=<ACCESS_TOKEN>"

 

이는 메타의 광고 계정에 대한 접근 권한을 해당 비즈니스 아이디에게 주겠다는 의미이다.

같은 방식으로, 페이지에 대해서도 권한을 줄 수 있다. ( 본인이 어떤 리소스에 대한 접근 권한이 없는지는 일일히 체크해보아야 한다. )

다만 우리가 봐야 하는 것은 이 요청이 아니라, 리소스에 대한 요청이고, 앞서 말했다시피 아마도 페이지일 것이다.

 

 

그래프 API 참고 자료 v19.0: Page Agencies - 문서 - Meta for Developers

permitted_tasks array<enum {MANAGE, CREATE_CONTENT, MODERATE, MESSAGING, ADVERTISE, ANALYZE, MODERATE_COMMUNITY, MANAGE_JOBS, PAGES_MESSAGING, PAGES_MESSAGING_SUBSCRIPTIONS, READ_PAGE_MAILBOXES, VIEW_MONETIZATION_INSIGHTS, MANAGE_LEADS, PROFILE_PLUS_FULL_C

developers.facebook.com

curl \
  -F "business=<BUSINESS_ID>" \
  -F "permitted_tasks=['MODERATE', 'ADVERTISE', 'ANALYZE']" \
  "https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/agencies?access_token=<ACCESS_TOKEN>"

 

만약 페이지에 대한 권한이 없다면, 이 요청을 날려 business에 권한을 부여해주면 된다.

여기서 말하는 비즈니스는, 권한을 위임받는 자, 즉, 파트너사를 의미하기 때문에 PBM, CBM의 개념에 해당한다.

권한은 MODERATE, ADVERTISE, ANALYZE를 받는 예제 코드인데, 이미 page 권한 일부를 받았다면 조정하여도 상관없다.

페이지 권한은 이 엔드포인트가 아니더라도, 예를 들어 CBM을 생성하는 단계에서도 미리 받을 수가 있다.

CBM에서는 CBM을 생성하는 단계에서 page_permitted_tasks라는 프로퍼티를 받는데 이 때 미리 받았다면 생략이 가능한 것이다.

따라서 본인도 모르는 사이에 이미 취득한 권한이 있을 수도 있다.

왜 모르는 권한이 있으면서, 진작에 다 받아두지 않았냐면, 아마도 페이지를 유저에게서 권한을 위임받을 때 아직 CBM이 없어서일 것이다.

유저에게 권한은 미리 받아두었지만 유저가 파트너사에 광고 생성까지 의뢰하지 않고 말았다면 이런 케이스가 발생할 수 있다.

그러니 만약 권한을 다시 받기 전에, 이전에 권한을 받았는지 확인하고 싶다면 저 요청을 GET 요청으로만 바꾸면 된다.

 

 

참조

 

How can I publish a campaign to a page I don't own by but I have access to with Facebook graph api on my personal ad account? -

My goal is automating ad management for businesses using facebook pages/facebook ads manager/facebook business manager. So typically, I will create, start, stop, optimize, and publish advertising campaigns on facebook. My problem is that I get an error say

developers.facebook.com

 

누군가 메타 커뮤니티에 직접 질문을 했고 나와 같은 방식으로 문제를 해결했음을 확인할 수 있다.

 

 

v3.1 - 그래프 API - 문서 - Meta for Developers

PAGE_ENGAGEMENT를 optimization_goal로 사용하지 못하도록 사용 중단 - PAGE_ENGAGEMENT를 광고 캠페인의 optimization_goal로 사용하지 못하도록 사용을 중단했습니다. v3.1 이후로 optimization_goal을 PAGE_ENGAGEMENT로 설

developers.facebook.com

 

위 링크는 페이지에 대한 권한을 줌에 따라 다음과 같이 유저를 구분함을 보인다.

아래의 테이블은, 이제는 역할(Role) 개념이 사라지고 각 권한에 대해서 부여할 수 있는 것으로 바뀌었으나 이해를 돕기 위해 첨부한다.

Admin ADVERTISE, ANALYZE, CREATE_CONTENT, MANAGE, MODERATE
Advertiser ADVERTISE, ANALYZE
Analyst ANALYZE
Editor ADVERTISE, ANALYZE, CREATE_CONTENT, MODERATE
Moderator ADVERTISE, ANALYZE, MODERATE
반응형