2017-04-11 158 views
0

我在調用ejabberd的「/ api/get_roster」端點時收到400錯誤的請求錯誤。在請求oauth令牌時,我一直在範圍內保留「get_roster」。400調用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錯誤。我能夠獲得令牌。這只是當我在POST調用API端點時使用該標記時,它表示有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瞭解更多詳情。如果您正在訪問的管理員可以使用commands_admin_access規則來提供訪問API命令,並指定要訪問如下的命令:

commands: 
    - add_commands: 
    - get_roster 
commands_admin_access: configure 
0

您正在使用非常古老的版本Ejabberd的。最新的是17.04,從16.01開始,API權限框架發生了很多變化。 api_permission相關配置出現在16.12版本中。請參閱this瞭解更多詳情。

相關問題