diff --git a/.env.example b/.env.example
index ddb32c0bc..9901189b4 100644
--- a/.env.example
+++ b/.env.example
@@ -49,6 +49,9 @@ GOOGLE_APP_SECRET=false
 OKTA_BASE_URL=false
 OKTA_KEY=false
 OKTA_SECRET=false
+TWITCH_KEY=false
+TWITCH_SECRET=false
+TWITCH_REDIRECT_URI=false  
 
 # External services such as Gravatar
 DISABLE_EXTERNAL_SERVICES=false
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index 05f9c57c1..5a690069c 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -18,6 +18,7 @@ class EventServiceProvider extends ServiceProvider
             'SocialiteProviders\Slack\SlackExtendSocialite@handle',
             'SocialiteProviders\Azure\AzureExtendSocialite@handle',
             'SocialiteProviders\Okta\OktaExtendSocialite@handle',
+            'SocialiteProviders\Twitch\TwitchExtendSocialite@handle',
         ],
     ];
 
diff --git a/app/Services/SocialAuthService.php b/app/Services/SocialAuthService.php
index 30f7eed0e..6eb5202ae 100644
--- a/app/Services/SocialAuthService.php
+++ b/app/Services/SocialAuthService.php
@@ -16,7 +16,7 @@ class SocialAuthService
     protected $socialite;
     protected $socialAccount;
 
-    protected $validSocialDrivers = ['google', 'github', 'facebook', 'slack', 'twitter', 'azure', 'okta'];
+    protected $validSocialDrivers = ['google', 'github', 'facebook', 'slack', 'twitter', 'azure', 'okta', 'twitch'];
 
     /**
      * SocialAuthService constructor.
diff --git a/composer.json b/composer.json
index 2750b7cb3..54eb3f26c 100644
--- a/composer.json
+++ b/composer.json
@@ -18,7 +18,8 @@
         "barryvdh/laravel-snappy": "^0.4.0",
         "socialiteproviders/slack": "^3.0",
         "socialiteproviders/microsoft-azure": "^3.0",
-        "socialiteproviders/okta": "^1.0"
+        "socialiteproviders/okta": "^1.0",
+        "socialiteproviders/twitch": "^3.0"
     },
     "require-dev": {
         "filp/whoops": "~2.0",
diff --git a/config/services.php b/config/services.php
index 18649c093..a630e8297 100644
--- a/config/services.php
+++ b/config/services.php
@@ -92,6 +92,13 @@ return [
         'redirect' => env('APP_URL') . '/login/service/okta/callback', 
         'base_url' => env('OKTA_BASE_URL'), 
         'name'          => 'Okta',
+    ],
+
+    'twitch' => [
+        'client_id' => env('TWITCH_KEY'),
+        'client_secret' => env('TWITCH_SECRET'),
+        'redirect' => env('TWITCH_REDIRECT_URI'),
+        'name'          => 'Twitch',
     ], 
 
     'ldap' => [
diff --git a/resources/assets/icons/twitch.svg b/resources/assets/icons/twitch.svg
new file mode 100644
index 000000000..0293ed9a1
--- /dev/null
+++ b/resources/assets/icons/twitch.svg
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2985"
+   version="1.1"
+   inkscape:version="0.48.2 r9819"
+   width="1000"
+   height="1139.412"
+   xml:space="preserve"
+   sodipodi:docname="Twitch logo black.svg"><metadata
+     id="metadata2991"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs2989" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1234"
+     inkscape:window-height="1038"
+     id="namedview2987"
+     showgrid="false"
+     fit-margin-left="0.5"
+     fit-margin-bottom="0.5"
+     fit-margin-top="0.5"
+     fit-margin-right="0.5"
+     inkscape:zoom="0.33712566"
+     inkscape:cx="344.76544"
+     inkscape:cy="201.71567"
+     inkscape:window-x="675"
+     inkscape:window-y="11"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="g2993" /><g
+     id="g2993"
+     inkscape:groupmode="layer"
+     inkscape:label="Twitch_IntegrationGuidelines"
+     transform="matrix(1.25,0,0,-1.25,-779.56837,2089.8162)"><g
+       id="g2995"
+       transform="matrix(9.5324427,0,0,9.5324427,1348.9493,1188.2344)"><path
+         d="m 0,0 -13.652,-13.651 -21.445,0 -11.699,-11.697 0,11.697 -17.548,0 0,56.544 L 0,42.893 0,0 z m -72.146,50.692 -3.899,-15.599 0,-70.19 17.55,0 0,-9.751 9.746,0 9.752,9.751 15.596,0 31.196,31.192 0,54.597 -79.941,0 z"
+         style="fill:#6441a5;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path2997"
+         inkscape:connector-curvature="0" /></g><path
+       d="m 940.03601,1225.3756 74.34349,0 0,223.0687 -74.34349,0 0,-223.0687 z m 204.43279,0 74.3435,0 0,223.0687 -74.3435,0 0,-223.0687 z"
+       style="fill:#6441a5;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path2999"
+       inkscape:connector-curvature="0" /></g></svg>
\ No newline at end of file