使用passport-slack和slackbots模块创建交互式按钮机器人

时间:2016-07-17 02:41:19

标签: javascript node.js passport.js slack

我需要创建一个创建一个新的交互式按钮的机器人。我使用passport-slack连接到API并使用slackbots模块发布消息。我遇到的问题是使用passport创建OAuth令牌时的范围权限。 slackbots模块使用rtm.start方法here,但此方法要求范围权限为'client'而不是'bot'。使用“客户端”范围一切正常,但帖子显示为经过身份验证的用户,而不是机器人。 'bot'权限允许我作为机器人发布但你不能同时使用这两个权限。我想也许这些模块是不兼容的,我需要使用除slackbots之外的其他模块,或者我在这里缺少一些东西。

passport.use(new SlackStrategy({
        clientID: clientID,
        clientSecret: clientSecret,
        callbackURL: callbackURL,
        scope: 'client',
        passReqToCallback : true
    },
    function(req, token, refreshToken, profile, done) {
...

1 个答案:

答案 0 :(得分:0)

使用Passport提供的accessToken时,我遇到了范围权限问题。

对我有用的是将params参数添加到回调并改为使用params.bot.bot_access_token

希望这有帮助!

passport.use('slack', new slackStrategy({
    clientID: process.env.SLACK_CLIENT_ID,
    clientSecret: process.env.SLACK_CLIENT_SECRET,
    skipUserProfile: true,
    scope: ['bot']
}, function(accessToken, refreshToken, params, profile, done) {
    # params.bot.bot_access_token is used to authenticate rtm.start
    return done(null, {});
}));