2021-04-08 20:45:56 +01:00
<!doctype html>
2022-05-21 20:06:33 +01:00
< html lang = "en" dir = "ltr" class = "docs-wrapper docs-doc-page docs-version-5.1.1 plugin-docs plugin-id-default docs-doc-id-auth/authorization_code" >
2021-04-08 20:45:56 +01:00
< head >
< meta charset = "UTF-8" >
2022-11-18 13:21:11 +00:00
< meta name = "generator" content = "Docusaurus v2.2.0" >
< title data-rh = "true" > Authorization Code | SpotifyAPI-NET< / title > < meta data-rh = "true" name = "viewport" content = "width=device-width,initial-scale=1" > < meta data-rh = "true" name = "twitter:card" content = "summary_large_image" > < meta data-rh = "true" property = "og:url" content = "https://johnnycrazy.github.io/SpotifyAPI-NET/docs/5.1.1/auth/authorization_code" > < meta data-rh = "true" name = "docusaurus_locale" content = "en" > < meta data-rh = "true" name = "docsearch:language" content = "en" > < meta data-rh = "true" name = "docusaurus_version" content = "5.1.1" > < meta data-rh = "true" name = "docusaurus_tag" content = "docs-default-5.1.1" > < meta data-rh = "true" name = "docsearch:version" content = "5.1.1" > < meta data-rh = "true" name = "docsearch:docusaurus_tag" content = "docs-default-5.1.1" > < meta data-rh = "true" property = "og:title" content = "Authorization Code | SpotifyAPI-NET" > < meta data-rh = "true" name = "description" content = "This way is not recommended for client-side apps and requires server-side code to run securely." > < meta data-rh = "true" property = "og:description" content = "This way is not recommended for client-side apps and requires server-side code to run securely." > < link data-rh = "true" rel = "icon" href = "/SpotifyAPI-NET/img/favicon.ico" > < link data-rh = "true" rel = "canonical" href = "https://johnnycrazy.github.io/SpotifyAPI-NET/docs/5.1.1/auth/authorization_code" > < link data-rh = "true" rel = "alternate" href = "https://johnnycrazy.github.io/SpotifyAPI-NET/docs/5.1.1/auth/authorization_code" hreflang = "en" > < link data-rh = "true" rel = "alternate" href = "https://johnnycrazy.github.io/SpotifyAPI-NET/docs/5.1.1/auth/authorization_code" hreflang = "x-default" > < link rel = "stylesheet" href = "/SpotifyAPI-NET/assets/css/styles.c5268834.css" >
2023-03-05 14:27:49 +00:00
< link rel = "preload" href = "/SpotifyAPI-NET/assets/js/runtime~main.cb5f42cb.js" as = "script" >
2023-03-05 14:21:05 +00:00
< link rel = "preload" href = "/SpotifyAPI-NET/assets/js/main.706e5f3c.js" as = "script" >
2021-04-08 20:45:56 +01:00
< / head >
2022-05-21 20:06:33 +01:00
< body class = "navigation-with-keyboard" >
2021-04-08 20:45:56 +01:00
< script > ! function ( ) { function t ( t ) { document . documentElement . setAttribute ( "data-theme" , t ) } var e = function ( ) { var t = null ; try { t = localStorage . getItem ( "theme" ) } catch ( t ) { } return t } ( ) ; t ( null !== e ? e : "light" ) } ( ) < / script > < div id = "__docusaurus" >
2022-11-27 13:33:00 +00:00
< div role = "region" aria-label = "Skip to main content" > < a class = "skipToContent_fXgn" href = "#docusaurus_skipToContent_fallback" > Skip to main content< / a > < / div > < nav class = "navbar navbar--fixed-top" > < div class = "navbar__inner" > < div class = "navbar__items" > < button aria-label = "Toggle navigation bar" aria-expanded = "false" class = "navbar__toggle clean-btn" type = "button" > < svg width = "30" height = "30" viewBox = "0 0 30 30" aria-hidden = "true" > < path stroke = "currentColor" stroke-linecap = "round" stroke-miterlimit = "10" stroke-width = "2" d = "M4 7h22M4 15h22M4 23h22" > < / path > < / svg > < / button > < a class = "navbar__brand" href = "/SpotifyAPI-NET/" > < div class = "navbar__logo" > < img src = "/SpotifyAPI-NET/img/logo.svg" alt = "SpotifyAPI-NET" class = "themedImage_ToTc themedImage--light_HNdA" > < img src = "/SpotifyAPI-NET/img/logo.svg" alt = "SpotifyAPI-NET" class = "themedImage_ToTc themedImage--dark_i4oU" > < / div > < b class = "navbar__title text--truncate" > SpotifyAPI-NET< / b > < / a > < div class = "navbar__item dropdown dropdown--hoverable" > < a href = "#" aria-haspopup = "true" aria-expanded = "false" role = "button" class = "navbar__link" > Docs< / a > < ul class = "dropdown__menu" > < li > < a class = "dropdown__link" href = "/SpotifyAPI-NET/docs/introduction" > 7.X (current)< / a > < / li > < li > < a class = "dropdown__link" href = "/SpotifyAPI-NET/docs/5.1.1/home" > 5.1.1< / a > < / li > < / ul > < / div > < / div > < div class = "navbar__items navbar__items--right" > < a href = "https://github.com/JohnnyCrazy/SpotifyAPI-NET" target = "_blank" rel = "noopener noreferrer" class = "navbar__item navbar__link" > GitHub< svg width = "13.5" height = "13.5" aria-hidden = "true" viewBox = "0 0 24 24" class = "iconExternalLink_nPIU" > < path fill = "currentColor" d = "M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z" > < / path > < / svg > < / a > < div class = "toggle_vylO colorModeToggle_DEke" > < button class = "clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type = "button" disabled = "" title = "Switch between dark and light mode (currently light mode)" aria-label = "Switch between dark and light mode (currently light mode)" aria-live = "polite" > < svg viewBox = "0 0 24 24" width = "24" height = "24" class = "lightToggleIcon_pyhR" > < path fill = "currentColor" d = "M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z" > < / path > < / svg > < svg viewBox = "0 0 24 24" width = "24" height = "24" class = "darkToggleIcon_wfgR" > < path fill = "currentColor" d = "M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z" > < / path > < / svg > < / button > < / div > < div class = "searchBox_ZlJk" > < / div > < / div > < / div > < div role = "presentation" class = "navbar-sidebar__backdrop" > < / div > < / nav > < div id = "docusaurus_skipToContent_fallback" class = "main-wrapper mainWrapper_z2l0 docsWrapper_BCFX" > < button aria-label = "Scroll back to top" class = "clean-btn theme-back-to-top-button backToTopButton_sjWU" type = "button" > < / button > < div class = "docPage__5DB" > < aside class = "theme-doc-sidebar-container docSidebarContainer_b6E3" > < div class = "sid
2021-04-08 20:45:56 +01:00
With this approach, you first get a code which you need to trade against the access-token.
In this exchange you need to provide your Client-Secret and because of that it' s not recommended.
2022-11-18 13:21:11 +00:00
A good thing about this method: You can always refresh your token, without having the user to auth it again.< / p > < p > More info: < a href = "https://developer.spotify.com/documentation/general/guides/authorization-guide/#authorization-code-flow" target = "_blank" rel = "noopener noreferrer" > here< / a > < / p > < div class = "language-csharp codeBlockContainer_Ckt0 theme-code-block" style = "--prism-color:#bfc7d5;--prism-background-color:#292d3e" > < div class = "codeBlockContent_biex" > < pre tabindex = "0" class = "prism-code language-csharp codeBlock_bY9V thin-scrollbar" > < code class = "codeBlockLines_e6Vv" > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token keyword" style = "font-style:italic" > static< / span > < span class = "token plain" > < / span > < span class = "token keyword" style = "font-style:italic" > async< / span > < span class = "token plain" > < / span > < span class = "token return-type class-name keyword" style = "color:rgb(255, 203, 107);font-style:italic" > void< / span > < span class = "token plain" > < / span > < span class = "token function" style = "color:rgb(130, 170, 255)" > Main< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > (< / span > < span class = "token class-name keyword" style = "color:rgb(255, 203, 107);font-style:italic" > string< / span > < span class = "token class-name punctuation" style = "color:rgb(199, 146, 234)" > [< / span > < span class = "token class-name punctuation" style = "color:rgb(199, 146, 234)" > ]< / span > < span class = "token plain" > args< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > )< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > {< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > < / span > < span class = "token class-name" style = "color:rgb(255, 203, 107)" > AuthorizationCodeAuth< / span > < span class = "token plain" > auth < / span > < span class = "token operator" style = "color:rgb(137, 221, 255)" > =< / span > < span class = "token plain" > < / span > < span class = "token keyword" style = "font-style:italic" > new< / span > < span class = "token plain" > < / span > < span class = "token constructor-invocation class-name" style = "color:rgb(255, 203, 107)" > AuthorizationCodeAuth< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > (< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > _clientId< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > ,< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > _secretId< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > ,< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > < / span > < span class = "token string" style = "color:rgb(195, 232, 141)" > " http://localhost:4002" < / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > ,< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > < / span > < span class = "token string" style = "color:rgb(195, 232, 141)" > " http://localhost:4002" < / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > ,< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > Scope< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > .< / span > < span class = "token plain" > PlaylistReadPrivate < / span > < span class = "token operator" style = "color:rgb(137, 221, 255)" > |< / span > < span class = "token plain" > Scope< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > .< / span > < span class = "token plain" > PlaylistReadCollaborative< / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > )< / span > < span class = "token punctuation" style = "color:rgb
2023-03-05 14:27:49 +00:00
In this procedure, no HTTP Server is needed in the background and a single HTTP Request is made.< / p > < div class = "language-csharp codeBlockContainer_Ckt0 theme-code-block" style = "--prism-color:#bfc7d5;--prism-background-color:#292d3e" > < div class = "codeBlockContent_biex" > < pre tabindex = "0" class = "prism-code language-csharp codeBlock_bY9V thin-scrollbar" > < code class = "codeBlockLines_e6Vv" > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token comment" style = "color:rgb(105, 112, 152);font-style:italic" > // Auth code from above< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" style = "display:inline-block" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > < / span > < span class = "token keyword" style = "font-style:italic" > if< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > (< / span > < span class = "token plain" > token< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > .< / span > < span class = "token function" style = "color:rgb(130, 170, 255)" > IsExpired< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > (< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > )< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > )< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > {< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > < / span > < span class = "token class-name" style = "color:rgb(255, 203, 107)" > Token< / span > < span class = "token plain" > newToken < / span > < span class = "token operator" style = "color:rgb(137, 221, 255)" > =< / span > < span class = "token plain" > < / span > < span class = "token keyword" style = "font-style:italic" > await< / span > < span class = "token plain" > auth< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > .< / span > < span class = "token function" style = "color:rgb(130, 170, 255)" > RefreshToken< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > (< / span > < span class = "token plain" > token< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > .< / span > < span class = "token plain" > RefreshToken< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > )< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > ;< / span > < span class = "token plain" > < / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > api< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > .< / span > < span class = "token plain" > AccessToken < / span > < span class = "token operator" style = "color:rgb(137, 221, 255)" > =< / span > < span class = "token plain" > newToken< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > .< / span > < span class = "token plain" > AccessToken< / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > api< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > .< / span > < span class = "token plain" > TokenType < / span > < span class = "token operator" style = "color:rgb(137, 221, 255)" > =< / span > < span class = "token plain" > newToken< / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > .< / span > < span class = "token plain" > TokenType< / span > < br > < / span > < span class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > < / span > < span class = "token punctuation" style = "color:rgb(199, 146, 234)" > }< / span > < br > < / span > < / code > < / pre > < div class = "buttonGroup__atx" > < button type = "button" aria-label = "Copy code to clipboard" title = "Copy" class = "clean-btn" > < span class = "copyButtonIcons_eSgA" aria-hidden = "true" > < svg class = "copyButtonIcon_y97N" viewBox = "0 0 24 24" > < path d = "M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" > < / path > < / svg > < svg class = "copyButtonSuccessIcon_LjdS" viewBox = "0 0 24 24" > < path d = "M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.5
< script src = "/SpotifyAPI-NET/assets/js/runtime~main.cb5f42cb.js" > < / script >
2023-03-05 14:21:05 +00:00
< script src = "/SpotifyAPI-NET/assets/js/main.706e5f3c.js" > < / script >
2021-04-08 20:45:56 +01:00
< / body >
< / html >