2017-04-11 1 views
0

ejabberdの "/ api/get_roster"エンドポイントを呼び出す際に400の不正なリクエストエラーが発生しました。 oauthトークンを要求している間、スコープ内に「get_roster」を保持していました。ejabberd apiを呼び出す際に400の不正な要求エラーが発生しました

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

リクエストは以下のようにAuthorizationヘッダーが含まれている必要があります。

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を参照することができます。あなたが管理者としてアクセスしている場合は、APIコマンドへのアクセスを提供するために、commands_admin_accessルールを使用して、次のようにアクセスしたいコマンドを指定することができます:あなたはEjabberdの非常に古いバージョンを使用している

commands: 
    - add_commands: 
    - get_roster 
commands_admin_access: configure 
0

。最新は17.04で、16.01からのAPI許可フレームワークの変更点がたくさんあります。 api_permission関連の設定は16.12バージョンでした。詳細はthisを参照してください。

関連する問題