diff --git a/spectrum/src/frontends/slack/SlackUserRegistration.cpp b/spectrum/src/frontends/slack/SlackUserRegistration.cpp index 7d770ca6494e3c7516bb66f71f3fc1ccd4aae4fd..058b04b8dd2bbd6da35b5d056d45052ba5450bf3 100644 --- a/spectrum/src/frontends/slack/SlackUserRegistration.cpp +++ b/spectrum/src/frontends/slack/SlackUserRegistration.cpp @@ -110,10 +110,12 @@ std::string SlackUserRegistration::getTeamDomain(const std::string &token) { std::string SlackUserRegistration::handleOAuth2Code(const std::string &code, const std::string &state) { OAuth2 *oauth2 = NULL; std::string token; + std::string access_token; std::vector data; if (state == "use_bot_token") { token = code; + access_token = code; } else { if (m_auths.find(state) != m_auths.end()) { @@ -124,10 +126,15 @@ std::string SlackUserRegistration::handleOAuth2Code(const std::string &code, con return "Received state code '" + state + "' not found in state codes list."; } - std::string error = oauth2->requestToken(code, token); + std::string error = oauth2->requestToken(code, access_token, token); if (!error.empty()) { return error; } + + if (token.empty()) { + LOG4CXX_INFO(logger, "Using 'token' as 'bot_access_token'"); + token = access_token; + } } std::string domain = getTeamDomain(token); @@ -154,6 +161,9 @@ std::string SlackUserRegistration::handleOAuth2Code(const std::string &code, con int type = (int) TYPE_STRING; m_storageBackend->getUserSetting(user.id, "bot_token", type, value); + value = access_token; + m_storageBackend->getUserSetting(user.id, "access_token", type, value); + LOG4CXX_INFO(logger, "Registered Slack user " << user.jid); if (oauth2) {