Im letzten Artikel Mastodon Instanz Local Timeline lesen, ohne Anmeldung wurde davon ausgegangen, dass die Lokale Timeline (auch public timeline genannt), öffentlich einsehbar ist. Allerdings ist es möglich, dass Admins der Instanz das deaktiviert haben.
Die API Dokumentation schreibt dazu:
OAuth: Public. Requires app token + read:statuses if the instance has disabled public preview.
Dies ist meiner Meinung nach ein Fehler in der Dokumentation. Wenn man nämlich in den git commit schaut, sieht man diese Sourcecode Änderung:
class Api::V1::Timelines::PublicController < Api::BaseController
before_action :require_user!, only: [:show], if: :require_auth?
require_auth
ist nur ein Check der Konfiguration, aber require_user
macht klar, dass ein App Token nicht reicht, man muss mindestens als User angemeldet sein.
Allerdings ist ein abgeschaltetes Preview extrem selten und evtl. kann man davon ausgehen, dass auch weitere Zugriffe auf die API von den Admins nicht erlaubt ist.
Ob eine Instanz überhaupt das anbietet, kann man schnell so ermitteln:
- Auf www.unmung.com/mastoview gehen (Achtung, das UI ist aus dem letzten Jahrtausend)
- In das Feld oben links den Instanznamen eingeben (ohne Protokoll)
- Local auswählen und dann Preview anklicken.
Dann sollte was zu sehen sein.
Ich habe noch über instances.social/list gesucht und nur eine einzige Instanz mit UP gefunden, die Local Timeline Preview deaktiviert hatte. In dem Fall gibt es die Fehlermeldung:
File "C:\DevTools\Core\Python39\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 102, in wrapper
return function(self, *args, **kwargs)
File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 753, in timeline_local
return self.timeline('local', max_id=max_id, min_id=min_id,
File "C:\DevTools\Core\Python39\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 102, in wrapper
return function(self, *args, **kwargs)
File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 734, in timeline
return self.__api_request('GET', url, params)
File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 3425, in __api_request
raise ex_type(
mastodon.Mastodon.MastodonAPIError: ('Mastodon API returned error', 422, 'Unprocessable Entity', 'This method requires an authenticated user')
Und die Exception macht auch klar, dass ein User (Account) mit Anmeldung notwendig ist.
Comments
May 4, 2022 06:45
Den Fehler in der Dokumentation habe ich mal gemeldet, evtl. fixe ich das selber per PR: https://github.com/mastodon/documentation/issues/942 #mastodon #documentation #api