Exemple à utiliser après l'authentification OAuth de l'API BOX avec Python

introduction

Voici un exemple qui utilise l'API du service cloud de partage de fichiers "BOX" de Python.

Diverses personnes ont présenté comment utiliser l'API, y compris le document "BOX". Je n'avais aucune information proche de ce que je voulais faire, j'ai donc écrit un article.

Ce que je voulais faire

https://github.com/box/box-python-sdk/blob/master/docs/usage/authentication.md Tout d'abord, je voulais exécuter rapidement l'exemple de code suivant sur ce site SDK.

client = Client(auth)
user = client.user().get()
print('User ID is {0}'.format(user.id))

Si vous voulez juste le déplacer, vous pouvez passer manuellement l'authentification OAuth, mais cette fois j'ai essayé de réaliser OAuth par une méthode simple.

environnement

Mac   10.14.6
Python  3.7.4
boxsdk  2.6.1 

Préparation

Installez le SDK BOX

Veuillez installer avec pip ou d'autres outils en fonction de votre environnement.

pip install boxsdk

Enregistrez l'application sur l'écran de gestion BOX

https://developer.box.com


スクリーンショット 2019-12-22 20.22.49.png
スクリーンショット 2019-12-22 20.19.46.png
スクリーンショット 2019-12-22 20.17.20.png

Copiez l'ID client et le code sensible du client affichés ici dans la source.

Entrez "http: // localhost: 8080" pour l'URI de redirection.

Exemple de code

sample.py


from boxsdk import OAuth2, Client
import webbrowser
import http.server
import socketserver
from urllib.parse import urlparse, parse_qs

#Obtenir à partir de l'écran de gestion BOX
CLIENT_ID = 'identité du client'
CLIENT_SECRET = 'Code sensible au client'

#Définir sur l'écran de gestion BOX
REDIRECT_URI = 'http://localhost:8080'

HOST = '127.0.0.1'
PORT = 8080

#Variable pour mettre le code d'authentification émis par BOX
global auth_code

auth_code = None

oauth = OAuth2(
    client_id = CLIENT_ID,
    client_secret = CLIENT_SECRET,
    store_tokens = None     #Le stockage des jetons est omis cette fois
)

#Démarrez OAuth
auth_url, csrf_token = oauth.get_authorization_url(REDIRECT_URI)

#Démarrez le navigateur et entrez l'ID de la BOÎTE et le mot de passe
#REDIRECT lors de la saisie_Redirigé vers l'URI
webbrowser.open(auth_url)

# REDIRECT_Traitement lorsque l'URI est atteint
class ServerHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        global auth_code
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b"<h1>Authenticated</h1>")
        parsed_path = urlparse(self.path)
        query = parse_qs(parsed_path.query)
        auth_code = query['code'][0]

with socketserver.TCPServer((HOST, PORT), ServerHandler) as server:
    print('http server start')
    # server.serve_forever()    # Ctrl+Continuez le traitement jusqu'à ce qu'il y ait une interruption, par exemple en appuyant sur C
    server.handle_request()     #Quitter après avoir traité une demande
    print('http server shutdown')

# auth_Maintenant que vous avez le code, vous pouvez utiliser l'API à partir d'ici
access_token, refresh_token = oauth.authenticate(auth_code)

client = Client(oauth)
me = client.user().get()
print('My user ID is {0}'.format(me.id))

Courir

point important

finalement

Je voulais l'exécuter sur JupyterLab, alors je l'ai écrit dans un seul fichier.

Il est facile de démarrer un serveur Web simple avec Python. Cette fois, j'aime le fait que le serveur Web se termine après avoir traité une demande.

Au contraire, je n'aime pas le fait que la méthode do_GET affecte directement la variable globale. Y a-t-il une belle façon de l'écrire?

Je ne pense pas que cela fonctionne étrangement, mais je ne suis pas encore familier avec Python, alors j'apprécierais que vous puissiez souligner des points ou des améliorations étranges.

Recommended Posts

Exemple à utiliser après l'authentification OAuth de l'API BOX avec Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Utiliser l'API Trello avec python
Accédez à l'API Twitter après l'authentification Oauth avec Django
Comment utiliser OAuth et API de compte de service avec le client API Google pour python
Utiliser l'API subsonique avec python3
API Nifty Cloud facile à utiliser avec botocore et python
Python: comment utiliser async avec
Comment utiliser l'API Python d'OpenPose
[Python] Comment utiliser l'API Typetalk
[Version septembre 2020] Explique la procédure d'utilisation de l'API Gmail avec Python
Comment utiliser Python Kivy (référence) -J'ai traduit le langage Kivy de la référence API-
[Python] Résumé de l'utilisation des pandas
[Introduction à Python] Utilisons foreach avec Python
[Python2.7] Résumé de l'utilisation d'unittest
Comment utiliser la commande CUT (avec exemple)
Résumé de l'utilisation de la liste Python
[Python2.7] Résumé de l'utilisation du sous-processus
Exemple de conversion en ondelettes d'images en Python
[Question] Comment utiliser plot_surface de python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
[Python] Comment utiliser deux types de type ()
Je veux utiliser MATLAB feval avec python
Procédure pour utiliser l'API WEB de TeamGant (en utilisant python)
Spécifiez le fichier exécutable Python à utiliser avec virtualenv
Utiliser plusieurs versions de l'environnement python avec pyenv
Résumé de l'utilisation de MNIST avec Python
Essayez l'authentification OAuth Slack avec Flask (API Slack V2)
Comment spécifier des attributs avec Mock of Python
Le moyen le plus simple d'utiliser OpenCV avec python
Histoire d'essayer d'utiliser Tensorboard avec Pytorch
Exemple de notification Slack avec python lambda
Je souhaite utiliser le répertoire temporaire avec Python2
Comment utiliser tkinter avec python dans pyenv
Résumé de l'étude de Python pour utiliser AWS Lambda
[Python] Mention à plusieurs personnes avec l'API de Slack
Flux pour terminer l'authentification Slack avec Flask (Python)
Mémo pour créer votre propre Box avec le Python de Pepper
[Python] Utiliser JSON avec Python
J'ai essayé de résumer comment utiliser matplotlib de python
Changer les paramètres IP en ACL de conoha avec python
Utiliser mecab avec Python 3
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
Utiliser DynamoDB avec Python
Comment utiliser le mode interactif python avec git bash
Comment utiliser Python Kivy ① ~ Bases du langage Kv ~
Utilisons la version Python du module API Confluence.
Utilisez Python 3.8 avec Anaconda
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
Utiliser python avec docker
Après avoir frappé l'API Qiita avec Python pour obtenir une liste d'articles pour les débutants, nous visiterons les articles divins
Spécifiez MinGW comme compilateur utilisé dans Python
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
Notes de site pour vous aider à utiliser NetworkX avec Python
[Python] Utilisez l'API Face de Microsoft Cognitive Services
Comment faire fonctionner l'API Discord avec Python (enregistrement de bot)
Utilisez python installé par Pyenv avec Sublime REPL de Sublime Text 3
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage