{"id":471,"date":"2025-12-05T16:19:50","date_gmt":"2025-12-05T16:19:50","guid":{"rendered":"https:\/\/www.bullcrane.com\/angular\/?p=471"},"modified":"2025-12-05T16:19:50","modified_gmt":"2025-12-05T16:19:50","slug":"spotify-pkce-authorization","status":"publish","type":"post","link":"http:\/\/www.bullcrane.com\/angular\/2025\/12\/05\/spotify-pkce-authorization\/","title":{"rendered":"Spotify PKCE Authorization"},"content":{"rendered":"\n<p>Spotify stopped supporting an older way of connecting that I built into Shufflizer back when I first created it in 2018.  So now Shufflizer uses Spotify&#8217;s modern technique, called PKCE authorization.<\/p>\n\n\n\n<p>As before, I didn&#8217;t code this authorization in Angular.  I found it easier to build the authorization using conventional web page html and javascript.  Once the user makes it though, signing into Spotify&#8217;s authentication, then my Angular app loads.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spotify stopped supporting an older way of connecting that I built into Shufflizer back when I first created it in 2018. So now Shufflizer uses Spotify&#8217;s modern technique, called PKCE authorization. As before, I didn&#8217;t code this authorization in Angular. I found it easier to build the authorization using conventional web page html and javascript. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.bullcrane.com\/angular\/2025\/12\/05\/spotify-pkce-authorization\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Spotify PKCE Authorization&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts\/471"}],"collection":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/comments?post=471"}],"version-history":[{"count":1,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts\/471\/revisions"}],"predecessor-version":[{"id":472,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/posts\/471\/revisions\/472"}],"wp:attachment":[{"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/media?parent=471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/categories?post=471"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.bullcrane.com\/angular\/wp-json\/wp\/v2\/tags?post=471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}