System::jsonError(422, $errorObj->toArray());
}
- public function Unauthorized(string $error = '')
+ public function Unauthorized(string $error = '', string $error_description = '')
{
$error = $error ?: $this->l10n->t('Unauthorized');
- $error_description = '';
$errorObj = new \Friendica\Object\Api\Mastodon\Error($error, $error_description);
$this->logError(401, $error);
*/
protected function post(array $request = [])
{
+ if (!empty($request['redirect_uris']) && is_array($request['redirect_uris'])) {
+ $request['redirect_uris'] = $request['redirect_uris'][0];
+ }
+
$request = $this->getRequest([
'client_name' => '',
'redirect_uris' => '',
if (!empty($postrequest) && is_array($postrequest)) {
$request = array_merge($request, $postrequest);
}
+
+ if (!empty($request['redirect_uris']) && is_array($request['redirect_uris'])) {
+ $request['redirect_uris'] = $request['redirect_uris'][0];
+ }
}
if (empty($request['client_name']) || empty($request['redirect_uris'])) {
use Psr\Http\Message\ResponseInterface;
/**
- * @see https://docs.joinmastodon.org/spec/oauth/
+ * @see https://docs.joinmastodon.org/methods/oauth/#token
* @see https://aaronparecki.com/oauth-2-simplified/
*/
class Token extends BaseApi
}
if (empty($request['client_id']) || empty($request['client_secret'])) {
- Logger::warning('Incomplete request data', ['request' => $_REQUEST]);
- DI::mstdnError()->UnprocessableEntity(DI::l10n()->t('Incomplete request data'));
+ Logger::warning('Incomplete request data', ['request' => $request]);
+ DI::mstdnError()->Unauthorized('invalid_client', DI::l10n()->t('Incomplete request data'));
}
$application = OAuth::getApplication($request['client_id'], $request['client_secret'], $request['redirect_uri']);
if (empty($application)) {
- DI::mstdnError()->UnprocessableEntity();
+ DI::mstdnError()->Unauthorized('invalid_client', DI::l10n()->t('Invalid data or unknown client'));
}
if ($request['grant_type'] == 'client_credentials') {