2017-04-11 5 views
0

ejabberd의 "/ api/get_roster"엔드 포인트를 호출하는 동안 400 번의 잘못된 요청 오류가 발생합니다. oauth 토큰을 요청하는 동안 범위에 "get_roster"를 유지했습니다.ejabberd api를 호출하는 중에 잘못된 요청 오류가 발생했습니다

400 bad request error in ejabberd

나는 권한으로 어떤 문제가있는 것 같아요. 나는 공식 문서를 따라하기 위해 노력했다

https://www.dropbox.com/s/his89bx39qhvr1h/ejabberd2.yml?dl=0

: 여기 내 구성 파일입니다. API 사용 권한 가이드에 따라 다음 속성을 추가해 보았습니다.

api_permissions: 
    - "Admin access": 
    - who: 
     - admin 
    - what 
     - "\*" 
     - "!stop" 

하지만 변경 사항은 없습니다. 다음 질문이 있습니다.

  1. 여기서 내가 뭘 잘못하고 있니?
  2. 가능한 범위는 무엇입니까?
+0

문서별로, 참고 사항 :: get_roster 범위를 사용하려면 mod_admin_extra를 활성화해야합니다. 그렇지 않으면 명령이 알려지지 않고 invalid_scope 오류가 발생합니다. –

+0

yml 파일의 modules 섹션에서 mod_admin_extra에 대해 언급했습니다. invalid_scope 오류가 발생하지 않았습니다. 나는 토큰을 얻을 수있다. API 토큰에 대한 POST 호출에서 해당 토큰을 사용할 때 400 개의 잘못된 요청이 표시됩니다. –

+0

사용중인 ejabberd의 버전은 무엇입니까? – Darshan

답변

0

요청이 승인 아래와 같이 헤더를 포함해야합니다

curl -v -X POST -H "Authorization: Bearer <Oauth_token>" http://localhost:5280/api/get_roster -d '[]' 
+0

동일한 작업을 수행 중입니다. https://www.dropbox.com/s/rgh88lua0jdytu5/Screen%20Shot%202017-04-11%20at%209.24.13%20PM.png?dl=0 –

+0

서버 로그를 공유 할 수 있습니까? ? 여기 –

+0

은 https://www.dropbox.com/s/vrlw2gc6p15e5dx/ejabberd_error_log_11_april.log?dl=0입니다. "api_permissions"속성을 인식하지 못합니다. 나는 그것을 잘못 배치했다? –

0

당신은 자세한 내용은이 link을 참조 할 수 있습니다. admin으로 액세스하는 경우 당신은 API 명령에 대한 액세스를 제공하는 commands_admin_access 규칙을 사용하여 다음과 같이 액세스 할 명령을 지정할 수 있습니다 : 당신은 Ejabberd의 아주 오래된 버전을 사용하는

commands: 
    - add_commands: 
    - get_roster 
commands_admin_access: configure 
0

. 최신은 16.01에서 API 권한 프레임 워크의 변경 사항이 많은 17.04입니다. api_permission 관련 구성은 16.12 버전으로 제공됩니다. 자세한 내용은 this을 참조하십시오.