{"_id":"@akryum/passport-slack-oauth2","_rev":"1-bb7e7d0d8d3a33cf4921859d624d5500","name":"@akryum/passport-slack-oauth2","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.3":{"name":"@akryum/passport-slack-oauth2","version":"1.0.3","description":"[Passport](https://github.com/jaredhanson/passport) strategy for authenticating with [Slack](https://slack.com) using the OAuth 2.0 API.","keywords":["passport","slack","oauth2","auth","authentication","identity"],"main":"./lib/index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/nmaves/passport-slack-oauth2.git"},"author":{"name":"Nathan Maves","email":"nathan.maves@gmail.com"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/MIT"}],"bugs":{"url":"https://github.com/nmaves/passport-slack-oauth2/issues"},"homepage":"https://github.com/nmaves/passport-slack-oauth2#readme","dependencies":{"passport-oauth2":"^1.4.0"},"gitHead":"5e25190b7d32584735786450a8ff92c6869f770f","_id":"@akryum/passport-slack-oauth2@1.0.3","_nodeVersion":"12.11.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-yt2taW9+pIKZ1o4+dLxKPI95K4QytAzIH4+mT7ajlXBJXa3Iw+B0iwFW57ZU2Thc/a0ruW8XJxw1L2tPH3UOnw==","shasum":"1293797d372fc8fee93d89391e8a22d826c0afe1","tarball":"https://registry.npmjs.org/@akryum/passport-slack-oauth2/-/passport-slack-oauth2-1.0.3.tgz","fileCount":5,"unpackedSize":10897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMeNzCRA9TVsSAnZWagAAkBkP/iawAoM1NMNO53f2elKd\nQNiaqMajUU89tzH1AOvoi1/eMqfxvhRLEPeRaIMUUtXTWYu26LAIr0IF+E8q\n18XL0OxdWRx+j/g65DTm5Ji+Cxg32xaFNviVaUoOC+sHkdKMAJBZaxIbBuLu\n6exgUacNlyjmOjSHxdouB0iBbKSuPRKUK2faJUXw6bnn1c0m5fn8bqWH0ARs\n5n3bJrUOQwGJEZIvwGcCdw+SNGB1JGTamZepZZKnG7pXEf42egeNv4xxQGRA\nsc3Ztwx5Ur0EYffUs0Z6tRkH/azvHYPo640NWrFDUE4y6Ktog42omNy/weZ8\ngG90IHrQaSUGAjsBkiEYwubcuBYvDeEVLwM5NIGiLZM7TXPlPj+/Dn6p61HS\nUgLY+U+9vQmL1Rf3Ulo6E0FETLoffzoB4zSNGLhZnjkg6XB9u+GvF6HqZw1g\npuKVyH/8PRf7KhHETXTFRVX5ld4gPjy3QoLk3sreNbj5ecets+UvNX8DhkOp\nIPcXtEmL6WSb6rGHyTqvFyNN0TkPCT7A+GtQ+i9PyDeP+WeHjsQo40IYEJbR\nweB6OoemAh1PDXMl/U5362wG6Pj2KBGv8HQQPMdpNisL4rAofMtF0w5CqSR3\n9f3lz8YXE/RD4YwTlMZoU3w+VIaOGfYHdGVD7NMLwGbVXLEh1WVc9SdLVUiU\ncPEz\r\n=N+4Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDy2EQ8jlRN8PdT3H0H9LcuDtgILPNXezmQnRl9UCPvQAIhAMtpjCN7CSMf/GxrShxkJlqGLXuaf4zbkjpibbgjBkdN"}]},"maintainers":[{"name":"akryum","email":"guillaume.b.chau@gmail.com"}],"_npmUser":{"name":"akryum","email":"guillaume.b.chau@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/passport-slack-oauth2_1.0.3_1580327794739_0.322463701525195"},"_hasShrinkwrap":false}},"time":{"created":"2020-01-29T19:56:34.704Z","1.0.3":"2020-01-29T19:56:34.857Z","modified":"2022-04-04T12:31:19.271Z"},"maintainers":[{"name":"akryum","email":"guillaume.b.chau@gmail.com"}],"description":"[Passport](https://github.com/jaredhanson/passport) strategy for authenticating with [Slack](https://slack.com) using the OAuth 2.0 API.","homepage":"https://github.com/nmaves/passport-slack-oauth2#readme","keywords":["passport","slack","oauth2","auth","authentication","identity"],"repository":{"type":"git","url":"git+https://github.com/nmaves/passport-slack-oauth2.git"},"author":{"name":"Nathan Maves","email":"nathan.maves@gmail.com"},"bugs":{"url":"https://github.com/nmaves/passport-slack-oauth2/issues"},"readme":"# passport-slack-oauth2\n\n[Passport](https://github.com/jaredhanson/passport) strategy for authenticating\nwith [Slack](https://slack.com) using the OAuth 2.0 API.\n\nUpdated to support Sign in with Slack by default.\n\n[![Sign in with Slack](https://a.slack-edge.com/accd8/img/sign_in_with_slack.png)](https://api.slack.com/docs/sign-in-with-slack#identify_users_and_their_teams)\n\n## Install\n```shell\n$ npm install passport-slack-oauth2\n```\n\n## Sample Profile\n```json\n{\n    \"provider\": \"Slack\",\n    \"id\": \"U123XXXXX\",\n    \"displayName\": \"John Agan\",\n    \"user\": {\n        \"name\": \"John Agan\",\n        \"id\": \"U123XXXXX\",\n        \"email\": \"johnagan@testing.com\",\n        \"image_24\": \"https://secure.gravatar.com/avatar/123abcd123bc12b3c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0000-24.png\",\n        \"image_32\": \"https://secure.gravatar.com/avatar/123abcd123bc12b3c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0000-32.png\",\n        \"image_48\": \"https://secure.gravatar.com/avatar/123abcd123bc12b3c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0000-48.png\",\n        \"image_72\": \"https://secure.gravatar.com/avatar/123abcd123bc12b3c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0000-72.png\",\n        \"image_192\": \"https://secure.gravatar.com/avatar/123abcd123bc12b3c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0000-192.png\",\n        \"image_512\": \"https://secure.gravatar.com/avatar/123abcd123bc12b3c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0000-512.png\"\n    },\n    \"team\": {\n        \"id\": \"T123XXXX\",\n        \"name\": \"My Awesome Team\",\n        \"domain\": \"my-awesome-team\",\n        \"image_34\": \"https://a.slack-edge.com/0000/img/avatars-teams/ava_0000-00.png\",\n        \"image_44\": \"https://a.slack-edge.com/00a0/img/avatars-teams/ava_0000-00.png\",\n        \"image_68\": \"https://a.slack-edge.com/00a0/img/avatars-teams/ava_0000-00.png\",\n        \"image_88\": \"https://a.slack-edge.com/00a0/img/avatars-teams/ava_0000-00.png\",\n        \"image_102\": \"https://a.slack-edge.com/00a0/img/avatars-teams/ava_0000-000.png\",\n        \"image_132\": \"https://a.slack-edge.com/00a0/img/avatars-teams/ava_0000-000.png\",\n        \"image_230\": \"https://a.slack-edge.com/0a0a0/img/avatars-teams/ava_0000-000.png\",\n        \"image_default\": true\n    }\n}\n\n```\n\n## Usage\n\n### Configure Strategy\n\nThe Slack authentication strategy authenticates users using a Slack\naccount and OAuth 2.0 tokens.  The strategy requires a `verify` callback, which\naccepts these credentials and calls `done` providing a user, as well as\n`options` specifying a client ID, client secret, and callback URL.\n\n```js\npassport.use(new SlackStrategy({\n    clientID: CLIENT_ID,\n    clientSecret: CLIENT_SECRET,\n    skipUserProfile: false, // default\n    scope: ['identity.basic', 'identity.email', 'identity.avatar', 'identity.team'] // default\n  },\n  (accessToken, refreshToken, profile, done) => {\n    // optionally persist user data into a database\n    done(null, profile);\n  }\n));\n```\n\n### Authenticate Requests\n\nUse `passport.authenticate()` (or `passport.authorize()` if you want to authenticate with Slack and **NOT** affect `req.user` and user session), specifying the `'slack'` strategy, to\nauthenticate requests.\n\nFor example, as route middleware in an [Express](http://expressjs.com/)\napplication:\n\n```js\napp.get('/auth/slack', passport.authorize('Slack'));\n\napp.get('/auth/slack/callback',\n  passport.authenticate('Slack', { failureRedirect: '/login' }),\n  (req, res) => res.redirect('/') // Successful authentication, redirect home.\n);\n```\n\n### Custom Scopes\nBy default passport-slack strategy will try to retrieve [all user identity](https://api.slack.com/methods/users.identity) from Slack using the default scopes of `identity.basic`, `identity.email`, `identity.avatar`, and `identity.team`. To override these, set the `scope` parameter to an array of scopes.\n\n```js\npassport.use(new SlackStrategy({\n\tclientID: CLIENT_ID,\n\tclientSecret: CLIENT_SECRET,\n\tscope: ['identity.basic', 'channels:read', 'chat:write:user']\n}, () => { });\n```\n\n### Ignore Profile Info\nIf you just need an access token and not user profile data, you can avoid getting profile info by setting `skipUserProfile` to true.\n```js\npassport.use(new SlackStrategy({\n\tclientID: CLIENT_ID,\n\tclientSecret: CLIENT_SECRET,\n\tscope: ['incoming-webhook'],\n\tskipUserProfile: true\n}, () => { });\n```\n\n## License\n\n[The MIT License](http://opensource.org/licenses/MIT)","readmeFilename":"README.md"}