如何获取Slack API的用户令牌

时间:2018-11-03 07:13:25

标签: python oauth authorization credentials slack

我有一个要运行的完全基于脚本的python Slack App,但它需要一个User(不是bot)令牌。我可以很好地使用旧式令牌,但我想通过oauth获得令牌。不过,我在弄清楚如何执行此操作时遇到了很多麻烦!我已经向应用程序添加了本地重定向,并且尝试了以下代码:

def _get_credentials(self):

    credential_dir = os.path.join(PATH, '.credentials')

    if not os.path.exists(credential_dir):
        os.makedirs(credential_dir)

    credential_path = os.path.join(credential_dir,
                                   CREDENTIALS_LOCATION)

    store = oauth2client.file.Storage(credential_path)
    credentials = store.get()

    if not credentials or credentials.invalid:

        clientSecretPath = os.path.join(PATH, CLIENT_SECRET_FILE)
        flow = client.flow_from_clientsecrets(clientSecretPath, SCOPES)
        flow.user_agent = APPLICATION_NAME

        #### START PROBLEM ###

        credentials = tools.run_flow(flow, store)

        #### BREAKS ####

        print('Storing credentials to ' + credential_path)

    return credentials 

我遇到的所有问题都在哈希标签指定的行上。

首先是,如果凭据文件不存在,则会创建它,而不是创建它。

如果我用所需的名称创建一个空文件,则Web浏览器将打开并要求用户进行身份验证。如果是这样,他们将转到显示“身份验证过程已完成”的页面。但是,在终端上它显示Authentication has failed: Invalid response: 302,并且没有任何内容存储到凭据文件。

无论哪种情况,它在#### BREAKS ####

之后都不会命中

我在做什么错,或者更好的是,我该怎么做对呢?

1 个答案:

答案 0 :(得分:0)

  1. 申请这些权限很容易:

  2. 从应用管理页面 (https://api.slack.com/apps) 加载应用设置。

  3. 在导航菜单中,选择 OAuth 和权限功能。

  4. 向下滚动到范围部分,然后从下拉菜单中选择频道:阅读和频道:历史。

  5. 点击保存更改。

  6. 滚动回此页面顶部并查找显示“将应用安装到工作区”的按钮(如果您之前已完成此操作,则为“重新安装应用”)。点击它。

您现在会看到一个权限请求屏幕,用于将您的应用安装到其原始工作区。