일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 레벨 1
- 프로그래머스 레벨 2
- HTTP 완벽 가이드
- 프로그래머스
- 타입스크립트
- HTTP
- typescript
- 백준
- 알고리즘
- Nestjs
- 자바스크립트
- BFS
- 그래프
- Crawling
- 타입 챌린지
- 소켓
- socket
- 수학
- Algorithm
- type challenge
- javascript
- 크롤링
- TCP
- ip
- Node.js
- 쉬운 문제
- dp
- 가천대
- dfs
- 문자열
- Today
- Total
kakasoo
[Meta] Application does not have permission for this action 본문
에러 상황
{
"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
는 액세스 권한이 없을 때 발생한다.
참고 차 내가 확인했던 스택 오버 플로우 링크를 기재한다.
만약 접근하고자 했던 리소스가 페이지라면 ( 동일한 에러라면 아마도 페이지일 것이라고 생각한다 ) 페이지를 조회해봐야 한다.
만약 접근하고자 했을 때 토큰으로 준 게 시스템 유저의 토큰이라면 시스템 유저가 페이지에 대한 권한이 없기 때문일 것이다.
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>"
이는 메타의 광고 계정에 대한 접근 권한을 해당 비즈니스 아이디에게 주겠다는 의미이다.
같은 방식으로, 페이지에 대해서도 권한을 줄 수 있다. ( 본인이 어떤 리소스에 대한 접근 권한이 없는지는 일일히 체크해보아야 한다. )
다만 우리가 봐야 하는 것은 이 요청이 아니라, 리소스에 대한 요청이고, 앞서 말했다시피 아마도 페이지일 것이다.
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 요청으로만 바꾸면 된다.
참조
누군가 메타 커뮤니티에 직접 질문을 했고 나와 같은 방식으로 문제를 해결했음을 확인할 수 있다.
위 링크는 페이지에 대한 권한을 줌에 따라 다음과 같이 유저를 구분함을 보인다.
아래의 테이블은, 이제는 역할(Role) 개념이 사라지고 각 권한에 대해서 부여할 수 있는 것으로 바뀌었으나 이해를 돕기 위해 첨부한다.
Admin | ADVERTISE, ANALYZE, CREATE_CONTENT, MANAGE, MODERATE |
Advertiser | ADVERTISE, ANALYZE |
Analyst | ANALYZE |
Editor | ADVERTISE, ANALYZE, CREATE_CONTENT, MODERATE |
Moderator | ADVERTISE, ANALYZE, MODERATE |
'도메인 > 마케팅' 카테고리의 다른 글
[Meta] API로 광고 생성하기 ( Campaign ~ AdCreative ) (0) | 2024.03.30 |
---|---|
[Meta] 용어 정리 (메타 자산 구조, 유저부터 유저의 자산까지) (0) | 2024.03.29 |
[Meta] Application request limit reached (0) | 2024.03.25 |
[Meta] Service temporaily unavailable (0) | 2024.03.25 |
스틱 - 112% 구독률의 신문 (0) | 2024.03.22 |