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.
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.
Mac 10.14.6
Python 3.7.4
boxsdk 2.6.1
Veuillez installer avec pip ou d'autres outils en fonction de votre environnement.
pip install boxsdk
https://developer.box.com
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.
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))
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