bymong
(bymong)
3월 17, 2022, 3:19오전
1
LogOut에 대한 샘플 코드를 작성하려고 합니다.
제 사이트 도메인은 'aaa.com ’이고, 사용자 ID는 '1’입니다.
URL을 만들고 다음과 같이 요청을 보냈습니다.
-post AAA Sorry Page
또한 헤더에 api-key, api-Username을 함께 보냈습니다.
하지만 "Oops! That page doesn’t exist or is private."라는 응답을 받았습니다.
다음과 같이 'CURL’을 시도해 보았습니다.
하지만 동일한 결과가 나왔습니다. (Oops! That page doesn’t exist or is private~~~ )
curl -X POST " AAA Sorry Page "
-H “Content-Type: multipart/form-data;”
-H “Api-Key: secretStringTemp”
-H “Api-Username: system”
-F “id=1” \
제가 어디가 잘못되었는지 알려주실 수 있을까요?
seanc
(Sean)
4월 17, 2023, 2:22오후
2
안녕하세요,
저도 같은 문제를 겪고 있어요. 혹시 해결하셨나요?
감사합니다
blake
(Blake Erickson)
4월 17, 2023, 2:37오후
3
여전히 API를 통해 사용자를 로그아웃할 수 있습니다. 사용한 curl 명령어는 다음과 같습니다:
curl -i -sS -X POST "http://localhost:4200/admin/users/1/log_out.json" \
-H "Content-Type: multipart/form-data" \
-H "Api-Key: 64b901d2357526d1b6e8c439fd0570f9c585073e6160ae18cc82b7ac358d4893" \
-H "Api-Username: blake.erickson"
HTTP/1.1 200 OK
{"success":"OK"}
아직 문제가 발생하고 있다면, API 요청에 대한 추가 정보를 공유해 주시겠습니까?
seanc
(Sean)
4월 17, 2023, 2:15오후
4
완전 막혀서 도움을 요청합니다!
API 엔드포인트 /admin/users/{USER_ID}/log_out.json를 사용하여 사용자를 로그아웃할 수 없습니다.
다음과 같은 방식으로 discourse USER_ID를 성공적으로 가져오고 있습니다: /u/by-external/${user.id}.json.
다른 API 엔드포인트를 통해 데이터를 가져오는 것도 정상적으로 작동하므로, API 키와 요청 메커니즘 자체에는 문제가 없다고 생각합니다.
하지만 POST 요청을 보내려 할 때…
await axios.post(`${process.env.FORUM_URL}/admin/users/${UserID}/log_out.json`,{
headers: {
'Api-Key': process.env.DISCOURSE_API_KEY,
'Api-Username': process.env.DISCOURSE_API_USERNAME,
},
});
…상태 코드 404와 함께 다음 응답 객체를 받습니다:
{
errors: [ 'The requested URL or resource could not be found.' ],
error_type: 'not_found'
}
SSO 구현은 큰 어려움 없이 완료했습니다. 로그아웃이 작동하지 않는 이유에 대한 통찰이 있다면 알려주시면 좋겠습니다.
감사합니다.
처음에는 괜찮아 보입니다 . UserID에 적절한 값이 들어 있나요?
seanc
(Sean)
4월 17, 2023, 2:37오후
6
네, 테스트 케이스에서는 1입니다. (/u/by-external/${user.id}.json 호출에서 가져온 값입니다). 확실하게 확인하려고 값을 하드코딩해서도 테스트해 봤는데… 결과는 동일했습니다.
다른 주제의 게시물들을 여기로 옮겨와서 토론이 한곳에 모이도록 했습니다.
조금 어색하게 느껴질 수 있지만 이해해 주세요.
blake
(Blake Erickson)
4월 17, 2023, 3:03오후
9
404 오류 메시지를 재현하는 한 가지 방법은 잘못된 user-id를 사용하는 것입니다. 먼저 id로 사용자를 가져올 수 있는지 확인해 주시겠습니까?
curl -i -sSL -X GET "http://localhost:4200/admin/users/1.json" \
-H "Api-Key: 64b901d2357526d1b6e8c439fd0570f9c585073e6160ae18cc82b7ac358d4893" \
-H "Api-Username: blake.erickson"
HTTP/1.1 200 OK
{
"id": 1,
"username": "blake.erickson",
...
seanc
(Sean)
4월 17, 2023, 3:29오후
10
좋아요, Discourse에서 유효한 user_id를 가져오고 있다는 것을 확인했습니다. 이 경우 1입니다…
{
"id":1,
"username":"Sean",
...
}
흥미롭게도, user id 1에 대한 log_out 엔드포인트로 cURL 요청을 보내면…
curl -i -sS -X POST https://community.site.com/admin/users/1/log_out.json
-H "Content-Type: multipart/form-data"
-H "Api-Key: my-api-key"
-H "Api-Username: Sean"
…200 응답을 받아, user 1(나)이 포럼에서 로그아웃되었어야 함을 시사합니다. 하지만 확인해 보니 실제로는 로그아웃이 되지 않았다는 것이 문제 1입니다.
두 번째 문제는 앱 백엔드에서 axios를 사용하여 동일한 요청을 보내면 404가 반환된다는 점입니다… 매우 이상합니다.
수정:
문제 1은 문제가 아닙니다 - cURL 요청이 성공적으로 로그아웃을 처리하고 있습니다 - 이제 axios POST 요청이 404를 반환하는 이유를 파악해야 합니다.
seanc
(Sean)
4월 17, 2023, 4:01오후
11
좋아 - 이제 알겠다
결국 제 axios 요청이 올바르게 포맷되지 않았던 거였어요! POST 요청에 바디를 보내지 않으므로, 요청과 함께 빈 객체를 전달해야 했는데 말이에요.
@blake , curl 요청에 대한 조언 감사합니다. 결국 그 덕분에 문제를 해결할 수 있었어요.
시안님,
비슷한 요청을 진행 중이므로 log_out.json 코드를 공유해 주실 수 있을까요?
포럼에서 게시글 API 'admin/users/{user_id}/log_out.json’를 사용하여 로그아웃을 시도해 보았지만, 'Oops! That page doesn’t exist or is private.'라는 오류가 반환됩니다.
헤더에 api_key와 api-username을 제공했습니다. 같은 문제를 겪으신 분이 계신가요?
해당 엔드포인트에 관리자 API 키를 사용해야 하나요?
Canapin
(Coin-coin le Canapin)
9월 6, 2023, 10:34오전
16
POST 요청을 /admin/users/1/log_out.json으로 보내어 API를 통해 성공적으로 로그아웃했습니다.
바디는 비워 두고, 헤더에는 관리자용 Api-Username과 Api-Key를 포함해야 합니다. 이 Api-Key는 글로벌 스코프를 가져야 하거나, 로그아웃 기능이 활성화된 세부 스코프를 가져야 합니다.
Canapin
(Coin-coin le Canapin)
9월 6, 2023, 1:08오후
18
어떤 소프트웨어나 프로그래밍 언어를 사용하여 API 호출을 했나요? 코드를 여기에 복사해서 붙여넣을 수 있나요?