[PYTHON] Exemple d'obtention d'un jeton d'accès de mastodonte avec code_autorisation

introduction

Ceci est un article sur l'obtention du jeton d'accès requis pour utiliser l'API mastodon.

Il existe différentes manières d'obtenir des jetons d'accès avec oauth2 en fonction de grant_type, mais des articles que vous voyez souvent Est un exemple en Python à obtenir avec grant_type =" code_autorisation " car beaucoup d'entre eux ont grant_type =" password ".

environnement

Résultat d'exécution

$ 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 : ****************************************************************

Commentaire

Obtenir l'ID client

Obtenez un ID client pour vous inscrire en tant qu'application authentifiée. Sur Twitter, des opérations comme celles enregistrées dans MyApps sur dev.twitter.com. Puisque mastodon n'a pas d'interface Web, obtenez-le avec l'API REST.

Vous obtiendrez le client_id et le 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 devrait en fait utiliser cet uri pour s'afficher sur la console sans rediriger. La portée est l'autorisation que cette application requiert de l'utilisateur. Vous ne devez demander que les autorisations requises par votre application.

Étant donné que l'émission de l'ID client est créée pour chaque application, dans l'exemple, elle est enregistrée dans un fichier et réutilisée.

Créer une URL pour l'approbation des autorisations

Générez une URL pour l'approbation des autorisations à l'aide de l'ID client. L'utilisateur l'ouvre dans un navigateur, confirme et approuve les autorisations requises par l'application (après s'être connecté si nécessaire).

Après approbation, il s'agit d'un flux pour rediriger vers l'URL demandée par l'application et recevoir le code d'authentification côté application, mais pour accepter la redirection ** Il doit être accessible via https avec le programme serveur ** (le service Web est comme ça) Devrait être fait pour Ici, le code de vérification est affiché sur le navigateur et l'utilisateur peut le copier et le coller. Les clients de bureau qui ne sont pas des navigateurs utilisent ce format.

Un code d'autorisation peut être obtenu par l'utilisateur qui l'approuve sur le navigateur.

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

Obtenez un jeton d'accès

Émettez un jeton d'accès à l'aide du code d'authentification, client_id et client_secret.

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"]

Puisque le jeton d'accès est obtenu, utilisez-le dans l'en-tête Authorization de l'API.

Code source

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

référence

Recommended Posts

Exemple d'obtention d'un jeton d'accès de mastodonte avec code_autorisation
Premiers pas avec Python Bases de Python
Exemple de traitement efficace des données avec PANDAS
Exemple de lecture et d'écriture de CSV avec Python
Exemple d'environnement pytest pour réparer la base de données avec Docker