Beispiel zur Verwendung nach OAuth-Authentifizierung der BOX-API mit Python

Einführung

Hier ist ein Beispiel, das die API des Cloud-Dienstes "BOX" für die Dateifreigabe von Python verwendet.

Verschiedene Personen haben die Verwendung der API vorgestellt, einschließlich des Dokuments "BOX". Ich hatte keine Informationen in der Nähe von dem, was ich tun wollte, also schrieb ich einen Artikel.

Was ich machen wollte

https://github.com/box/box-python-sdk/blob/master/docs/usage/authentication.md Zunächst wollte ich den folgenden Beispielcode auf dieser SDK-Site schnell ausführen.

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

Wenn Sie es nur verschieben möchten, können Sie die OAuth-Authentifizierung manuell übergeben. Diesmal habe ich jedoch versucht, OAuth mit einer einfachen Methode zu realisieren.

Umgebung

Mac   10.14.6
Python  3.7.4
boxsdk  2.6.1 

Vorbereitung

Installieren Sie das BOX SDK

Bitte installieren Sie mit Pip oder anderen Werkzeugen entsprechend Ihrer Umgebung.

pip install boxsdk

Registrieren Sie die App auf dem BOX-Verwaltungsbildschirm

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

Kopieren Sie die hier angezeigte Client-ID und den Client-sensitiven Code in die Quelle.

Geben Sie "http: // localhost: 8080" als Umleitungs-URI ein.

Beispielcode

sample.py


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

#Rufen Sie den BOX-Verwaltungsbildschirm auf
CLIENT_ID = 'Kunden ID'
CLIENT_SECRET = 'Client-sensibler Code'

#Stellen Sie dies auf dem BOX-Verwaltungsbildschirm ein
REDIRECT_URI = 'http://localhost:8080'

HOST = '127.0.0.1'
PORT = 8080

#Variable zum Einfügen des von BOX ausgegebenen Authentifizierungscodes
global auth_code

auth_code = None

oauth = OAuth2(
    client_id = CLIENT_ID,
    client_secret = CLIENT_SECRET,
    store_tokens = None     #Der Token-Speicher entfällt diesmal
)

#Starten Sie OAuth
auth_url, csrf_token = oauth.get_authorization_url(REDIRECT_URI)

#Starten Sie den Browser und geben Sie die BOX-ID und das Passwort ein
#Bei Eingabe umleiten_Auf URI umgeleitet
webbrowser.open(auth_url)

# REDIRECT_Verarbeitung, wenn URI getroffen wird
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+Setzen Sie die Verarbeitung fort, bis ein Interrupt auftritt, z. B. Drücken von C.
    server.handle_request()     #Beenden Sie nach Bearbeitung einer Anfrage
    print('http server shutdown')

# auth_Nachdem Sie den Code haben, können Sie die API von hier aus verwenden
access_token, refresh_token = oauth.authenticate(auth_code)

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

Lauf

wichtiger Punkt

Schließlich

Ich wollte es auf JupyterLab ausführen, also habe ich es in einer Datei geschrieben.

Es ist einfach, einen einfachen Webserver mit Python zu starten. Diesmal gefällt mir die Tatsache, dass der Webserver nach der Verarbeitung einer Anfrage beendet wird.

Im Gegenteil, ich mag es nicht, dass die Methode do_GET direkt der globalen Variablen zugewiesen wird. Gibt es eine schöne Möglichkeit, es zu schreiben?

Ich denke nicht, dass es seltsam funktioniert, aber ich bin noch nicht mit Python vertraut, daher würde ich es begrüßen, wenn Sie auf merkwürdige Punkte oder Verbesserungen hinweisen könnten.

Recommended Posts

Beispiel zur Verwendung nach OAuth-Authentifizierung der BOX-API mit Python
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Verwenden Sie die Trello-API mit Python
Klicken Sie nach der Oauth-Authentifizierung mit Django auf die Twitter-API
Verwendung von OAuth und API für Dienstkonten mit Google API Client für Python
Verwenden Sie die Unterschall-API mit Python3
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Python: So verwenden Sie Async mit
Verwendung der Python-API von OpenPose
[Python] Verwendung der Typetalk-API
[Version September 2020] Erläutert das Verfahren zur Verwendung der Google Mail-API mit Python
Verwendung von Python Kivy (Referenz) -Ich habe die Kivy-Sprache der API-Referenz übersetzt-
[Python] Zusammenfassung der Verwendung von Pandas
[Einführung in Python] Verwenden wir foreach mit Python
[Python2.7] Zusammenfassung der Verwendung von unittest
Verwendung des CUT-Befehls (mit Beispiel)
Zusammenfassung der Verwendung der Python-Liste
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Beispiel für die Wavelet-Konvertierung von Bildern in Python
[Frage] Wie verwende ich plot_surface von Python?
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
[Python] Verwendung von zwei Arten von type ()
Ich möchte MATLAB feval mit Python verwenden
Vorgehensweise zur Verwendung der WEG-API von TeamGant (mit Python)
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Verwenden Sie mit pyenv mehrere Versionen der Python-Umgebung
Zusammenfassung der Verwendung von MNIST mit Python
Versuchen Sie eine lockere OAuth-Authentifizierung mit einem Kolben (Slack API V2).
So legen Sie Attribute mit Mock of Python fest
Der einfachste Weg, OpenCV mit Python zu verwenden
Die Geschichte des Versuchs, Tensorboard mit Pytorch zu verwenden
Beispiel für eine Slack-Benachrichtigung mit Python Lambda
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Wie man tkinter mit Python in Pyenv benutzt
Zusammenfassung des Studiums von Python zur Verwendung von AWS Lambda
[Python] Erwähnen Sie mit der Slack-API mehrere Personen
Flow, um die Slack-Authentifizierung mit Flask (Python) abzuschließen
Memo zum Erstellen einer eigenen Box mit Peppers Python
[Python] Verwenden Sie JSON mit Python
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ändern Sie die IP-Einstellungen mit Python in ACL von conoha
Verwenden Sie Mecab mit Python 3
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Verwenden Sie DynamoDB mit Python
Verwendung des interaktiven Python-Modus mit Git Bash
Verwendung von Python Kivy ~ ~ Grundlagen der Kv-Sprache ~
Verwenden wir die Python-Version des Confluence-API-Moduls.
Verwenden Sie Python 3.8 mit Anaconda
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Verwenden Sie Python mit Docker
Nachdem Sie mit Python auf die Qiita-API geklickt haben, um eine Liste mit Artikeln für Anfänger zu erhalten, werden wir die Artikel von God besuchen
Geben Sie MinGW als den in Python verwendeten Compiler an
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Site-Hinweise zur Verwendung von NetworkX mit Python
[Python] Verwenden Sie die Face-API von Microsoft Cognitive Services
So bedienen Sie die Discord API mit Python (Bot-Registrierung)
Verwenden Sie Python, das von Pyenv mit Sublime REPL von Sublime Text 3 installiert wurde
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung