#api #authentication #mediawiki #mediawiki-api
#API #аутентификация #mediawiki #mediawiki-api
Вопрос:
Это довольно загадочная проблема. У меня несколько установок MediaWiki. В данном конкретном случае: версия 1.34.
Теперь я могу войти во все эти MediaWiki. Все работает нормально.
Теперь я могу получить доступ ко всем этим MediaWiki через API -КРОМЕ ОДНОГО. Странно то, что все они настроены практически одинаково. Я даже скопировал конфигурацию из одной вики, где все работало, во вторую вики.
Если быть более точным. Если я отправлю…
/wikiA/api.php?action=queryamp;meta=tokensamp;format=jsonamp;type=login
… Я получаю очень разумный ответ, например:
{"batchcomplete":"","query":{"tokens":{"logintoken":"37ec2e690eeb48a10ac66b2ccbca2b576000f9f4 \"}}}
Если я отправлю…
/wikiB/api.php?action=queryamp;meta=tokensamp;format=jsonamp;type=login
… Я получаю следующий ответ, например:
{"error":{"code":"readapidenied","info":"You need read permission to use this module.","*":"See http://xxx.xxx.xxx.xxx/wikiB/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at amp;<https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announceamp;> for notice of API deprecations and breaking changes."}}
Это можно воспроизвести с помощью любого веб-браузера.
В: В чем может быть причина того, что при этом wikiB
я даже не могу получить доступ к обычному модулю входа? Это не может быть конфигурация. Это почти полностью идентично. Это не может быть исходный код. Я проверил разницу в файлах PHP и не обнаружил существенных различий. Что здесь может быть не так? Кажется, это должно быть что-то с базой данных. Но как мне подойти к этому? У кого-нибудь есть идея? Я был бы очень признателен, если бы вы могли помочь!
Ответ №1:
Я проанализировал базу данных: никакой разницы. Я провел дополнительные исследования с помощью Google: И нашел отчет об ошибке.
Это ошибка в MediaWiki. Они предоставили официальный выпуск программного обеспечения с ТАКОЙ ошибкой.
Оказывается, есть версии 1.34.0 и 1.34.1. У моей WikiA 1.34.1, а у WikiB 1.34.0. После копирования этого одного файла includes/api/ApiQuery.php
из WikiA в WikiB все работало нормально.