멀티사이트 방식으로 사이트를 두 개로 분리하는 중인데, API와 씨름하는 시간이 또 찾아왔습니다.
지금 제가 하려는 일은 리스트 1(기본 사이트)에서 리스트 2(두 번째 사이트)의 사용자들을 비활성화하는 것입니다.
이미 리스트 1에서 리스트 2의 사용자들을 비활성화한 상태이며, PHP 스크립트에서 변경한 내용은 두 번째 사이트에서 새로운 API 키를 생성하여 CURL 호출에 삽입한 것뿐입니다. 그런데 Invalid_Access 오류가 발생하고 있습니다.
다음은 대부분의 API 키가 제거된 호출 예시입니다. 이 키는 해당 사용자만 사용할 수 있으며, 전역 접근 권한이 있습니다.
curl -X PUT -H “Content-Type: multipart/form-data;” -H “Api-Key: a23…” -H “Api-Username: nolan” “https://nu-sports.tssi.com/admin/users/4/deactivate.json/”
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 98 0 98 0 0 212 0 --:–:-- --:–:-- --:–:-- 4454
{“errors”:[“You are not permitted to view the requested resource.”],“error_type”:“invalid_access”}
제가 볼 때, API 키의 범위를 축소하여 비활성화(deactivation)만 처리하도록 하는 옵션이 없습니다. 제공되는 옵션 목록에 해당 항목이 없으며, 전역 키(global key)는 어차피 작동하지 않습니다. (개인적 의견이지만, API 쪽에서 개선이 필요합니다.)
deactivate.json 코드가 어디에 있는지 모르겠습니다. 제 서버에서 검색해 보았지만 찾을 수 없었으니, 아마도 별도의 파일이 아닌 것 같습니다. 기본 사이트에서는 잘 작동했는데, 서브 사이트(secondsite)인 경우 특정 문제가 있는 것은 아닌지 궁금합니다.
서브 사이트 관련해서 제가 발견한 첫 번째 문제는 아닐 것입니다. 다만, 첫 번째 문제가 실제로 문제점으로 보고된 적이 있는지 확실하지는 않습니다. 이 문제는 nginx 설정 파일 내의 코드와 관련이 있으며, 이 코드는 URL의 도메인 이름이 기본 도메인인지 확인합니다. 저는 리빌드할 때마다 해당 코드 줄들을 주석 처리하곤 합니다. 이 문제는 다음 게시글에서 보고한 바 있습니다: