通过slack bolt python初始化slack app的方法是
app = App(token = SLACK_BOT_TOKEN, signing_secret = SLACK_SIGNING_SECRET)
在这种情况下,应用程序只有机器人令牌范围。
需要机器人令牌范围和用户令牌范围的松弛应用程序呢?创建两个应用程序实例?如何初始化具有两个作用域的应用程序?谢谢
如果您通过您的帐户创建了 slack 应用程序并将 slack 应用程序安装到您的工作区,您将能够从 Slack 应用程序仪表板的 OAuth 部分获取用户令牌。但是,以上仅适用于单个用户。
如果您希望您的应用程序在多个工作区中使用。您可以设置 OAuth 流程,该流程由具有用户和机器人令牌范围的
slack-bolt
框架支持,并且可以使用 context.bot_token
和 context.user_token
访问应用程序中的值。阅读更多这里.
下面是使用
slack-bolt
和 Flask
设置 OAuth 流程的基本示例
import os
from slack_bolt import App
from slack_bolt.oauth.oauth_settings import OAuthSettings
from slack_sdk.oauth.installation_store.file import FileInstallationStore
from slack_sdk.oauth.state_store.file import FileOAuthStateStore
from slack_bolt.adapter.flask import SlackRequestHandler
from flask import Flask, request
# oauth settings with all required parameters
oauth_settings = OAuthSettings(
client_id = os.getenv("SLACK_CLIENT_ID"),
scopes = ["commands","files:read","users:read","users:read.email","chat:write"],
user_scopes = ["files:read"],
redirect_uri = None,
install_page_rendering_enabled = False,
install_path = "/slack/install",
redirect_uri_path = "/slack/oauth_redirect",
installation_store = FileInstallationStore(base_dir="./data/installations"),
state_store = FileOAuthStateStore(expiration_seconds=600, base_dir="./data/states")
)
# Initializes your app
app = App(
signing_secret=os.getenv("SLACK_SIGNING_SECRET"),
oauth_settings=oauth_settings
)
flask_app = Flask(__name__)
handler = SlackRequestHandler(app)
# endpoint for handling all slack events
@flask_app.route("/slack/events", methods=["POST"])
def slack_events():
return handler.handle(request)
# endpoint for handling app install
@flask_app.route("/slack/install", methods=["GET"])
def install():
return handler.handle(request)
# for oauth redirect
@flask_app.route("/slack/oauth_redirect", methods=["GET"])
def oauth_redirect():
return handler.handle(request)
if __name__ == "__main__":
flask_app.run(debug=True,host="0.0.0.0", port=8080)