[PYTHON] Beispiel für das Abrufen eines Zugriffstokens von Mastodon mit authorisation_code

Einführung

Dies ist ein Artikel über das Abrufen des für die Verwendung der Mastodon-API erforderlichen Zugriffstokens.

Abhängig von grant_type gibt es verschiedene Möglichkeiten, mit oauth2 auf Zugriffstoken zuzugreifen, aber Artikel, die Sie häufig sehen Ist ein Beispiel in Python, um mit grant_type =" authorisation_code " zu erhalten, da viele von ihnengrant_type = "password"haben.

Umgebung

Ausführungsergebnis

$ python mastodon_auth_example.py 
client id:     XXXXXXXXXX...
client secret: YYYYYYYYYY...
open browser  https://mstdn.jp/oauth/authorize?scope=read+write+follow&client_id=XXXXXXXXXXXXXXXXX&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code
input code > ZZZZZZZZZ....
access token : ****************************************************************

Kommentar

Client-ID abrufen

Holen Sie sich eine Client-ID, um sich als authentifizierte App zu registrieren. Auf Twitter werden Vorgänge wie in MyApps auf dev.twitter.com registriert. Da mastodon kein Webinterface hat, holen Sie es sich mit der REST-API.

Sie erhalten die client_id und client_secret.

res = requests.post('https://mstdn.jp/api/v1/apps',
                    dict(client_name=CLIENT_NAME,
                         redirect_uris="urn:ietf:wg:oauth:2.0:oob",
                         scopes="read write follow")).json()

return res["client_id"], res["client_secret"]

redirect_uris sollte diese URL tatsächlich verwenden, um sie auf der Konsole anzuzeigen, ohne sie umzuleiten. Umfang ist die Berechtigung, die diese App vom Benutzer benötigt. Sie sollten nur die Berechtigungen anfordern, die Ihre App benötigt.

Da die Ausgabe der Client-ID für jede Anwendung erstellt wird, wird sie im Beispiel in einer Datei gespeichert und wiederverwendet.

Erstellen Sie eine URL für die Autorisierungsgenehmigung

Generieren Sie mithilfe der Client-ID eine URL für die Autorisierungsgenehmigung. Der Benutzer öffnet es in einem Browser, bestätigt und genehmigt die für die App erforderlichen Berechtigungen (ggf. nach dem Anmelden).

Nach der Genehmigung ist es ein Ablauf, auf die von der Anwendung angeforderte URL umzuleiten und den Authentifizierungscode auf der Anwendungsseite zu erhalten. Um die Weiterleitung zu akzeptieren, muss sie jedoch über https mit dem Serverprogramm zugänglich sein ** (der Webdienst ist so). Sollte gemacht werden, um Hier wird der Bestätigungscode im Browser angezeigt und der Benutzer kann ihn kopieren und einfügen. Desktop-Clients, die keine Browser sind, verwenden dieses Format.

Ein Autorisierungscode kann vom Benutzer abgerufen werden, der ihn im Browser genehmigt.

params = urlencode(dict(
    client_id=client_id,
    response_type="code",
    redirect_uri="urn:ietf:wg:oauth:2.0:oob",   #Codeanzeige im Browser
    scope=SCOPE
))
return 'https://mstdn.jp/oauth/authorize?'+params

Zugriffstoken erhalten

Stellen Sie ein Zugriffstoken mit dem Authentifizierungscode client_id und client_secret aus.

res = requests.post('https://mstdn.jp/oauth/token', dict(
    grant_type="authorization_code",
    redirect_uri="urn:ietf:wg:oauth:2.0:oob",
    client_id=client_id,
    client_secret=client_secret,
    code=code
)).json()
return res["access_token"]

Da das Zugriffstoken abgerufen wird, verwenden Sie es im Authorization-Header der API.

Quellcode

https://github.com/civic/mastodon-auth-example

Referenz

Recommended Posts

Beispiel für das Abrufen eines Zugriffstokens von Mastodon mit authorisation_code
Erste Schritte mit Python Grundlagen von Python
Beispiel für eine effiziente Datenverarbeitung mit PANDAS
Beispiel für das Lesen und Schreiben von CSV mit Python
Beispiel einer Pytest-Umgebung zum Reparieren der Datenbank mit Docker