Bug(バグ) #4453
closedJSON API activity/mentions.json が GET に対応していない
0%
Updated by isao sano over 4 years ago
- Related to Task(タスク) #4433: JSON API ドキュメントの見直しと修正 added
Updated by kaoru n over 4 years ago
- Target version changed from OpenPNE 3.10.x to OpenPNE 3.11.x
Updated by kaoru n almost 4 years ago
パラメータの順によって、 curl の結果が変わる
(1) count, apiKey の場合
$ curl http://{snip}/api.php/activity/mentions.json?count=10&apiKey={snip} $ 401 Unauthorized: apiKey parameter not specified.
(2) apiKey, count の場合
$ curl http://{snip}/api.php/activity/mentions.json?apiKey={snip}&count=10 $ {"status":"success","data":[]}
ブラウザでアクセスした場合は、どちらの場合も
{ status: "success", data: [ ] }
Updated by kaoru n almost 4 years ago
https://houou.github.io/api.php/activity_mentions.html
には
activity/mentions.json 概要 自分のスクリーンネームが含まれているメンションタイムラインを取得してきます。
と記載があるが、スクリーンネームは opTimelinePlugin のすでに削除された機能。
また、この API は、テンプレートを使用し且つ template_param に指定された API Key を持つメンバーIDが本文に設定されている投稿を検索する機能。
https://github.com/openpne/OpenPNE3/blob/master/lib/util/opActivityQueryBuilder.class.php#L248-L260
protected function buildMentionQuery($query)
{
$friendQuery = $this->buildFriendQuery($query->createSubquery())
->andWhereLike('a.template_param', '|'.$this->viewerId.'|');
$snsQuery = $this->buildAllMemberQuery($query->createSubquery())
->andWhereLike('a.template_param', '|'.$this->viewerId.'|');
$subQuery = array_map(array($this, 'trimSubqueryWhere'), array($friendQuery, $snsQuery));
$query->andWhere(implode(' OR ', $subQuery));
return $query;
}
$query = $builder->buildQuery()
->andWhere('in_reply_to_activity_id IS NULL')
->andWhere('foreign_table IS NULL')
->andWhere('foreign_id IS NULL')
->limit(20);
opDiaryPlugin, opCommunityTopicPlugin では、テンプレートを使用して自動投稿を行うが、メンバーIDは埋め込まない。
参考: #2773
opCommunityTopicPlugin の activity_template.yml: https://github.com/tejimaya/opCommunityTopicPlugin/blob/master/config/activity_template.yml
opDiaryTopicPlugin の activity_template.yml: https://github.com/tejimaya/opDiaryPlugin/blob/master/config/activity_template.yml
#4453-3 にて
レスポンスステータスは「SUCCESS」となるが内容が空である。
とされているが、これは template_param の値に「|{指定された API Key を持つメンバーID}|」が含まれていないため。
#4453-4 に記載した通り、curl実行時のパラメータ順が影響している件について修正が必要。
またJSON APIドキュメントに下記のような注釈が必要だと思います。
このAPIを利用してデータ取得を行うには、投稿時にテンプレートを利用し、且つ「template_param」に、スクリーンネームではなくメンバーIDが設定されている必要がある。 現時点で、このような投稿を行う機能はドキュメント製作者においては未確認である。
Updated by kaoru n almost 4 years ago
#4453-4 に記載した通り、curl実行時のパラメータ順が影響している件について修正が必要。
curl でリクエストを投げる際に複数パラメータを「&」でつないで渡す場合は、「&」をエスケープしなければいけないようです。
参照: https://hkdnet.hatenablog.com/entry/2015/09/19/133415
複数パラメータを利用している場合URLの&がシェルの&(バックグラウンドプロセス)と競合してしまい、違うコマンドとして認識されてしまう。
であるので、ドキュメントの修正のみで良さそうです。
$ curl http://{snip}/api.php/activity/mentions.json?count=10\&apiKey={snip} $ curl http://{snip}/api.php/activity/mentions.json?apiKey={snip}\&count=10
Updated by kaoru n almost 4 years ago
- Status changed from New(新規) to Accepted(着手)
- Assignee set to kaoru n
Updated by kaoru n almost 4 years ago
- Status changed from Accepted(着手) to Invalid(無効)
activity/mentions.json については、使用できる機能が現状存在しないためドキュメントから削除します