Project

General

Profile

Bug(バグ) #4469

JSON API diary/search が 401 エラーになる

Added by isao sano 11 months ago. Updated 3 months ago.

Status:
Accepted(着手)
Priority:
Normal(通常)
Assignee:
Target version:
Start date:
2020-06-22
Due date:
% Done:

0%

3.6 で発生するか:
Unknown (未調査)
[QA]バグ通知済:
No
3.8 で発生するか:
Yes (はい)

Description

概要

JSON API diary/search が

401 Unauthorized: apiKey parameter not specified.

となる


Related issues

Related to OpenPNE 3 - Task(タスク) #4433: JSON API ドキュメントの見直しと修正 Pending Testing(テスト待ち) 2020-04-06
Related to opDiaryPlugin - Bug(バグ) #4496: JSON API diary/search.json にてパラメータは正しいが結果がない場合にも HTTPステータスコード400 が返却される Pending Review(レビュー待ち) 2021-02-04

History

#1 Updated by isao sano 11 months ago

#2 Updated by kaoru n 11 months ago

  • Target version changed from OpenPNE 3.10.x to OpenPNE 3.11.x

#3 Updated by isao sano 9 months ago

400 Bad Request: invalid target と表示される

#4 Updated by kaoru n 3 months ago

  • Project changed from OpenPNE 3 to opDiaryPlugin
  • Target version deleted (OpenPNE 3.11.x)
  • [QA]バグ通知済 set to No

#5 Updated by kaoru n 3 months ago

  • Target version set to dev-1.5.x

#6 Updated by kaoru n 3 months ago

  • Status changed from New(新規) to Accepted(着手)
  • Assignee set to kaoru n

& をエスケープした場合

$ curl http://{snip}/api.php/diary/search.json?apiKey={snip}\&id=1
$ 400 Bad Request: invalid target

$ curl http://{snip}/api.php/diary/search.json?id=1\&apiKey={snip}
$ 400 Bad Request: invalid target

& をエスケープしなかった場合

$ curl http://{snip}/api.php/diary/search.json?apiKey={snip}&id=1
$ 400 Bad Request: invalid target

$ curl http://{snip}/api.php/diary/search.json?id=1&apiKey={snip}
$ 401 Unauthorized: apiKey parameter not specified.

#7 Updated by kaoru n 3 months ago

target パラメータが必要

https://github.com/tejimaya/opDiaryPlugin/blob/dev-1.5.x/lib/action/opDiaryPluginAPIActions.class.php#L28-L55

    switch ($target)
    {
      case 'list' :
        $publicFlag = DiaryTable::PUBLIC_FLAG_SNS;
        $pager = $table->getDiaryPager($options['page'], $options['limit'], $publicFlag);
        break;
      case 'list_mine':
        $pager = $table->getMemberDiaryPager($myMember->id, $options['page'], $options['limit'], $myMember->id);
        break;
      case 'list_member' :
        $memberId = $request->getParameter('member_id');
        if (!$memberId)
        {
          $pager = $table->getMemberDiaryPager($myMember->id, $options['page'], $options['limit'], $myMember->id);
        }
        else
        {
          $this->forward403If($this->isAccessBlockFromMember($memberId));
          $pager = $table->getMemberDiaryPager($memberId, $options['page'], $options['limit'], $myMember->id);
        }
        break;
      case 'list_friend' :
        $pager = $table->getFriendDiaryPager($myMember->id, $options['page'], $options['limit']);
        break;
      default:
        throw new Exception('invalid target');
        break;
    }

#8 Updated by kaoru n 3 months ago

diary/search のリクエストパラメータ

・target 必須、以下のいずれかを指定する
  diary: 指定された diary_id の日記情報を取得、ただし指定したapiKeyのメンバーに閲覧権限がない場合は「400 Bad Request」が返却される
  list: 公開範囲が「Web全体に公開」、「全員に公開」に設定されている日記の一覧を取得
  list_mine: 指定した apiKey のメンバーの日記の一覧を取得、公開範囲が「公開しない」ものも含む
  list_member:
    - member_id を指定しない場合は、list_mine と同じ一覧を取得
    - 指定した member_id が指定した apiKey のメンバーのメンバーIDの場合は list_mine と同じ一覧を取得
    - 指定した member_id が指定した apiKey のメンバーのフレンドの場合は、
     公開範囲が「Web全体に公開」、「全員に公開」、「マイフレンドまで公開」に設定されている member_id の日記一覧を取得
    - 指定した member_id が指定した apiKey のメンバーのフレンドではない場合は、
     公開範囲が「Web全体に公開」、「全員に公開」に設定されている member_id の日記一覧を取得

・diary_id
  target = diary の場合に必須、閲覧したい日記のIDを指定する
  指定した diary_id が存在しない場合は「400 Bad Request: diary does not exist」が返却される

・member_id
  target = list_member の場合に指定可能、それ以外の場合の指定は無効
  指定した member_id が存在しない場合は「{status: "success", data: [ ], data_count: 0}」が返却される

・page
  指定されない場合のデフォルト値は「1」
  target = diary の場合の指定は無効

・limit
  指定されない場合のデフォルト値は、管理画面→プラグイン設定→ opDiaryPlugin 設定→日記API取得件数 に設定された件数
  target = diary の場合の指定は無効

パラメータがあっているが、データが存在しなかった場合に「400 Bad Request」を返却しているが、「{status: "success", data: [ ], data_count: 0}」を返却すべき
これは別件であるので、別チケットを作成して修正する

#9 Updated by kaoru n 3 months ago

  • Related to Bug(バグ) #4496: JSON API diary/search.json にてパラメータは正しいが結果がない場合にも HTTPステータスコード400 が返却される added

Also available in: Atom PDF