Wenn Sie beim Erstellen einer Slack-App diese nur in einem Arbeitsbereich installieren möchten, können Sie sie manuell über die ** Einstellungsseite ** der App installieren. Wenn Sie die App jedoch persönlich installieren oder schließlich ** im Slack-Verzeichnis veröffentlichen möchten, müssen Sie sie mit OAuth-Authentifizierung installieren.
Ich denke, dass der Mechanismus der OAuth-Authentifizierung von Slack der gleiche ist wie der allgemeine.
import os
import slack
from flask import Flask, request, make_response
client_id = os.environ["SLACK_CLIENT_ID"]
client_secret = os.environ["SLACK_CLIENT_SECRET"]
#Fügen Sie hier den für die App erforderlichen Bereich hinzu.
oauth_scope = ",".join([
"channels:history",
"groups:history",
"im:history",
"mpim:history",
"chat:write"
]) #os.environ["SLACK_BOT_SCOPE"]
uuids = []
app = Flask(__name__)
@app.route("/begin_auth", methods=["GET"])
def pre_install():
"""Erstellen Sie einen Link zur OAuth-Authentifizierungsseite von slack und zeigen Sie ihn an."""
from uuid import uuid4
state_string = str(uuid4())
uuids.append(state_string)
return f'<a href="https://slack.com/oauth/v2/authorize?scope={ oauth_scope }&client_id={ client_id }&state={ state_string}">Add to Slack</a>'
@app.route("/finish_auth", methods=["GET", "POST"])
def post_install():
"""Dies ist die Verarbeitung des umgeleiteten Zugriffs nach Abschluss der Authentifizierung."""
auth_code = request.args['code']
state_code = request.args['state']
#state_401, wenn die Codes nicht übereinstimmen
if not state_code in uuids:
return make_response("", 401)
else:
uuids.remove(state_code)
#Erstellen Sie zur Authentifizierung einen Client mit einem leeren Token.
client = slack.WebClient(token="")
#Fordern Sie ein Authentifizierungstoken an.
response = client.oauth_v2_access(
client_id=client_id,
client_secret=client_secret,
code=auth_code
)
#Speichern Sie das Slackbot-Token in der Datenbank usw.
SLACK_BOT_TOKEN = response['access_token']
#Vergessen Sie nicht, Ihren Benutzern den Erfolg mitzuteilen!
return make_response("Erfolgreiche Authentifizierung!!", 200)
app.run()
Registrieren Sie http: // localhost: 5000 / finish_auth
in App> Grundlegende Informationen> OAuth & Berechtigungen> URLs umleiten
.
Speichern Sie mit "URLs speichern"
Jetzt bist du bereit Starten Sie den Kolben und greifen Sie auf "http: // localhost: 5000 / begin_auth" zu.
Klicken Sie auf den Link und Sie werden aufgefordert, Slack zu authentifizieren.
Drücken Sie Zulassen, um zum nächsten Bildschirm zu wechseln und zu diesem Zeitpunkt einen Token zu generieren. Wenn die UUID4 für die Überprüfung übereinstimmt, entfernen Sie sie aus der Liste und verwenden Sie den slackClient, um das Zugriffstoken abzurufen.
Ich habe es nicht in diesen Code geschrieben, aber speichern wir das erhaltene Zugriffstoken für die nächste Verwendung.
Slack API Japanese Document Installing with OAuth
Recommended Posts