Lors de la création d'une application Slack, si vous souhaitez l'installer dans un seul espace de travail, vous pouvez l'installer manuellement à partir de la ** page des paramètres ** de l'application. Cependant, si vous souhaitez installer l'application personnellement, ou enfin ** la publier dans le répertoire Slack, vous devrez l'installer avec l'authentification OAuth.
Je pense que le mécanisme d'authentification OAuth de slack est le même que celui général.
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"]
#Ajoutez la portée requise par l'application ici.
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():
"""Créez et affichez un lien vers la page d'authentification OAuth de slack."""
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():
"""Il s'agit du traitement de l'accès redirigé une fois l'authentification terminée."""
auth_code = request.args['code']
state_code = request.args['state']
#state_401 si les codes ne correspondent pas
if not state_code in uuids:
return make_response("", 401)
else:
uuids.remove(state_code)
#Pour vous authentifier, créez un client avec un jeton vide.
client = slack.WebClient(token="")
#Demandez un jeton d'authentification.
response = client.oauth_v2_access(
client_id=client_id,
client_secret=client_secret,
code=auth_code
)
#Enregistrez le jeton slackbot dans DB, etc.
SLACK_BOT_TOKEN = response['access_token']
#N'oubliez pas de dire à vos utilisateurs le succès!
return make_response("Authentification réussie!!", 200)
app.run()
ʻApp> Informations de base> OAuth et autorisations> Enregistrez http: // localhost: 5000 / finish_auth
dans les URL de redirection`.
Enregistrer avec Enregistrer les URL
Maintenant tu es prêt
Démarrez flask et accédez à http: // localhost: 5000 / begin_auth
.
Cliquez sur le lien et il vous sera demandé d'authentifier Slack.
Appuyez sur Autoriser pour passer à l'écran suivant et générer un jeton à ce moment-là. Si l'UUID4 pour la vérification correspond, supprimez-le de la liste et utilisez slackClient pour obtenir le jeton d'accès.
Je ne l'ai pas écrit dans ce code, mais sauvegardons le jeton d'accès obtenu pour la prochaine utilisation.
document japonais de l'API slack Installing with OAuth
Recommended Posts