<a id="slack"></a>

# Slack

<a id="backend-class"></a>

## Backend class

For Django, add this class path to `AUTHENTICATION_BACKENDS`. For other
integrations, use the same class path in the framework-specific backend
setting.

| Backend name   | Class path                               |
|----------------|------------------------------------------|
| `slack`        | `social_core.backends.slack.SlackOAuth2` |

Slack

- Register a new application at [Slack](https://api.slack.com/applications), set the callback URL to
  `http://example.com/complete/slack/` replacing `example.com` with your
  domain.
- Fill `Client ID` and `Client Secret` values in the settings:
  ```default
  SOCIAL_AUTH_SLACK_KEY = ''
  SOCIAL_AUTH_SLACK_SECRET = ''
  ```
- Also it’s possible to define extra permissions with:
  ```default
  SOCIAL_AUTH_SLACK_SCOPE = [...]
  ```

  See auth scopes at [Slack OAuth docs](https://api.slack.com/docs/oauth).
- To allow sign-in only from one Slack workspace, set its workspace ID:
  ```default
  SOCIAL_AUTH_SLACK_TEAM = 'T0123456789'
  ```

  The backend checks the `team.id` returned by Slack’s `users.identity`
  response before signing in. The `team` authorization parameter selects a
  workspace on Slack’s sign-in page, but does not enforce this restriction.
  A missing or different workspace ID rejects the sign-in. Configure a
  workspace ID (starting with `T`), not a workspace name or Enterprise
  organization ID (starting with `E`). Deployments previously using a name
  or organization ID must update this setting before upgrading.
