<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/blog/rss.xsl" type="text/xsl" media="screen" ?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comments on: YouTube Oauth API fuckery	</title>
	<atom:link href="https://cdn.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/</link>
	<description></description>
	<lastBuildDate>Mon, 09 Mar 2026 04:48:50 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://cdn.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/feed/"/>
	<item>
		<title>
		By: youtube user		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267405</link>

		<dc:creator><![CDATA[youtube user]]></dc:creator>
		<pubDate>Mon, 09 Mar 2026 04:48:50 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267405</guid>

					<description><![CDATA[&#062;Maybe because they are old accounts that pre-date YouTube being purchased by Google?
Yes, that&#039;s right. I archive YouTube videos, there are several URL formats for YouTube channels.

/user/${USERNAME} - If you signed up before 2014 or something like that, you have one of these.
/c/${CUSTOMNAME} - After 2013 or something like that, you could make a &quot;custom&quot; name that you could change at will if your channel was &#039;approved&#039; to do so by The Algorithm. Deprecated.
/${NAME} - One of either a /user/ username or /c/ custom name. Which one takes precedence in a conflict, I have no idea.

/channel/UC${REALLY-LONG-STRING} - Somewhere around 2011 YouTube started giving everybody one of these. If a channel doesn&#039;t have a /user/ username or /c/ custom name, this is the only way to refer to a channel that can&#039;t be changed by the channel owner (i.e. permalink). I think the &quot;UC&quot; stands for &quot;user channel&quot;, because you can change it to &quot;UU&quot; (&quot;user uploads&quot;) as the argument to a /playlist?list= to get a playlist of all the videos on a channel (don&#039;t tell anyone or they might &quot;fix&quot; it). YouTube is trying very hard to hide this since they started giving out &quot;at symbol&quot; names, it can now only reliably be found in the HTML source in a &quot;link&quot; element with attribute rel=&quot;canonical&quot; href=&quot;foobar&quot;. If the channel has &quot;Watch All Uploads&quot; available on the home tab of their channel, it can also be found there as the /playlist?list= parameter (with UU instead of UC).

@${NAME} - As of some years ago, now everybody gets an at symbol name too. If you have an existing /user/name or /c/ustom_name, it defaults to this (don&#039;t know which one takes precedence in a conflict). If not, it looks like it makes something up based on the &quot;real name&quot; field with some numbers added. At symbol names cannot be referred to without the at symbol like the old /${NAME} format.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">United States</div>
<p>&gt;Maybe because they are old accounts that pre-date YouTube being purchased by Google?<br />
Yes, that's right. I archive YouTube videos, there are several URL formats for YouTube channels.</p>
<p>/user/${USERNAME} - If you signed up before 2014 or something like that, you have one of these.<br />
/c/${CUSTOMNAME} - After 2013 or something like that, you could make a "custom" name that you could change at will if your channel was 'approved' to do so by The Algorithm. Deprecated.<br />
/${NAME} - One of either a /user/ username or /c/ custom name. Which one takes precedence in a conflict, I have no idea.</p>
<p>/channel/UC${REALLY-LONG-STRING} - Somewhere around 2011 YouTube started giving everybody one of these. If a channel doesn't have a /user/ username or /c/ custom name, this is the only way to refer to a channel that can't be changed by the channel owner (i.e. permalink). I think the "UC" stands for "user channel", because you can change it to "UU" ("user uploads") as the argument to a /playlist?list= to get a playlist of all the videos on a channel (don't tell anyone or they might "fix" it). YouTube is trying very hard to hide this since they started giving out "at symbol" names, it can now only reliably be found in the HTML source in a "link" element with attribute rel="canonical" href="foobar". If the channel has "Watch All Uploads" available on the home tab of their channel, it can also be found there as the /playlist?list= parameter (with UU instead of UC).</p>
<p>@${NAME} - As of some years ago, now everybody gets an at symbol name too. If you have an existing /user/name or /c/ustom_name, it defaults to this (don't know which one takes precedence in a conflict). If not, it looks like it makes something up based on the "real name" field with some numbers added. At symbol names cannot be referred to without the at symbol like the old /${NAME} format.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Chas. Owens		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267151</link>

		<dc:creator><![CDATA[Chas. Owens]]></dc:creator>
		<pubDate>Fri, 27 Feb 2026 18:26:37 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267151</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266955&quot;&gt;jwz&lt;/a&gt;.

It is the new (as of 2020) name for G Suite (i.e., the Google apps under a custom domain name used by businesses) aka Google Apps.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">United States</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266955">jwz</a>.</p>
<p>It is the new (as of 2020) name for G Suite (i.e., the Google apps under a custom domain name used by businesses) aka Google Apps.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: happyborg		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267142</link>

		<dc:creator><![CDATA[happyborg]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 10:39:05 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267142</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267134&quot;&gt;jwz&lt;/a&gt;.

&quot;I love the smell of LLMs in the morning&quot;]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267134">jwz</a>.</p>
<p>"I love the smell of LLMs in the morning"</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Lachlan Cooper		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267139</link>

		<dc:creator><![CDATA[Lachlan Cooper]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 08:01:02 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267139</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267134&quot;&gt;jwz&lt;/a&gt;.

Trying to use any Google API as a mere user is so hilariously user-unfriendly.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267134">jwz</a>.</p>
<p>Trying to use any Google API as a mere user is so hilariously user-unfriendly.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: drypaphmrbro		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267137</link>

		<dc:creator><![CDATA[drypaphmrbro]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 07:23:26 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267137</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267135&quot;&gt;ggn&lt;/a&gt;.

Is it ever gonna let you down?]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267135">ggn</a>.</p>
<p>Is it ever gonna let you down?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Multi Purr Puss		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267136</link>

		<dc:creator><![CDATA[Multi Purr Puss]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 06:57:36 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267136</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267134&quot;&gt;jwz&lt;/a&gt;.

for 🦊 sake!]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267134">jwz</a>.</p>
<p>for 🦊 sake!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: ggn		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267135</link>

		<dc:creator><![CDATA[ggn]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 06:30:14 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267135</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267134&quot;&gt;jwz&lt;/a&gt;.

Is the app ever gonna give you up?]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267134">jwz</a>.</p>
<p>Is the app ever gonna give you up?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267134</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 06:19:06 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267134</guid>

					<description><![CDATA[Guess what! Google is making me write &lt;I&gt;another&lt;/I&gt; placebo privacy policy, just to authorize a login token to my own YouTube account. (It&#039;s a password. But they call it an &quot;app&quot;.)

And they rejected it because in the snark-assed privacy policy for my &quot;YouTube app&quot; I can&#039;t use the word &quot;YouTube&quot; because &quot;it could potentially confuse users and lead them to believe your app is officially affiliated with or endorsed by Google&quot;.

The &quot;YouTube app&quot; for logging in to &quot;YouTube&quot; can&#039;t say &quot;YouTube&quot;.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>Guess what! Google is making me write <i>another</i> placebo privacy policy, just to authorize a login token to my own YouTube account. (It's a password. But they call it an "app".)</p>
<p>And they rejected it because in the snark-assed privacy policy for my "YouTube app" I can't use the word "YouTube" because "it could potentially confuse users and lead them to believe your app is officially affiliated with or endorsed by Google".</p>
<p>The "YouTube app" for logging in to "YouTube" can't say "YouTube".</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: David		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267131</link>

		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 19:43:05 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267131</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267129&quot;&gt;jwz&lt;/a&gt;.

Bummer...
I&#039;m guessing this won&#039;t work for your use case because YouTube requires a &quot;real&quot; access token for some API calls, and API keys only work for reads...

Sorry for wasting your time.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">United States</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267129">jwz</a>.</p>
<p>Bummer...<br />
I'm guessing this won't work for your use case because YouTube requires a "real" access token for some API calls, and API keys only work for reads...</p>
<p>Sorry for wasting your time.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-267129</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 18:17:49 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-267129</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266973&quot;&gt;David&lt;/a&gt;.

&lt;pre&gt;&lt;code&gt;GET https://www.googleapis.com/oauth2/v1/tokeninfo?key=API_KEY
400: Either access_token, id_token, or token_handle required

GET https://www.googleapis.com/youtube/v3/channels?mine=true&#038;part=snippet,status,contentDetails&#038;key=API_KEY
401: The request uses the mine parameter but is not properly authorized.&lt;/code&gt;&lt;/pre&gt;]]></description>
			<content:encoded><![CDATA[<div class="geolocation">United States</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266973">David</a>.</p>
<pre><code>GET https://www.googleapis.com/oauth2/v1/tokeninfo?key=API_KEY
400: Either access_token, id_token, or token_handle required

GET https://www.googleapis.com/youtube/v3/channels?mine=true&amp;part=snippet,status,contentDetails&amp;key=API_KEY
401: The request uses the mine parameter but is not properly authorized.</code></pre>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: David		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266973</link>

		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 00:44:07 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266973</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266972&quot;&gt;jwz&lt;/a&gt;.

You can pass the API key directly in the URL for v3 API calls, e.g.&#160; `GET /youtube/v3/search?key=[API key]` (instead of the `Authorization` header with your access token).]]></description>
			<content:encoded><![CDATA[<div class="geolocation">United States</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266972">jwz</a>.</p>
<p>You can pass the API key directly in the URL for v3 API calls, e.g.&nbsp; `GET /youtube/v3/search?key=[API key]` (instead of the `Authorization` header with your access token).</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266972</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 00:04:33 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266972</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266971&quot;&gt;David C&lt;/a&gt;.

I have no idea what that is or how I would use it.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">United States</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266971">David C</a>.</p>
<p>I have no idea what that is or how I would use it.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: David C		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266971</link>

		<dc:creator><![CDATA[David C]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 23:09:00 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266971</guid>

					<description><![CDATA[Have you considered creating an &lt;a href=&quot;https://console.cloud.google.com/apis/api/youtube.googleapis.com/credentials&quot; rel=&quot;nofollow ugc&quot;&gt;API key&lt;/a&gt; instead of using OAuth? 
(YMMV, not sure if it requires a paid account; also it&#039;s only for API v3)]]></description>
			<content:encoded><![CDATA[<div class="geolocation">United States</div>
<p>Have you considered creating an <a href="https://console.cloud.google.com/apis/api/youtube.googleapis.com/credentials" rel="nofollow ugc">API key</a> instead of using OAuth?<br />
(YMMV, not sure if it requires a paid account; also it's only for API v3)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266970</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 21:29:47 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266970</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266969&quot;&gt;jwz&lt;/a&gt;.

And if I authenticate with any of those older &quot;projects&quot; besides the 2024 one, every request fails with &quot;quota exceeded&quot;, even though they have not been accessed in years.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266969">jwz</a>.</p>
<p>And if I authenticate with any of those older "projects" besides the 2024 one, every request fails with "quota exceeded", even though they have not been accessed in years.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266969</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 21:09:38 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266969</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266963&quot;&gt;jwz&lt;/a&gt;.

OMG I just stumbled across a page of detritus showing that I have been fighting with this crap for 14+ years...
&lt;P&gt;&lt;IMG SRC=&quot;https://www.jwz.org/images/2026/comments/31ba9fe8b8bdefd-4.jpg&quot; WIDTH=&quot;1742&quot; HEIGHT=&quot;484&quot; data-size=&quot;1742x484&quot;&gt;]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266963">jwz</a>.</p>
<p>OMG I just stumbled across a page of detritus showing that I have been fighting with this crap for 14+ years...</p>
<p><a HREF="https://cdn.jwz.org/images/2026/comments/31ba9fe8b8bdefd-4.jpg" data-size="1742x484"><img SRC="https://cdn.jwz.org/images/scaled/768/2026/comments/31ba9fe8b8bdefd-4.jpg" WIDTH="1742" HEIGHT="484" SRCSET="https://www.jwz.org/images/2026/comments/31ba9fe8b8bdefd-4.jpg 1742w, https://www.jwz.org/images/scaled/1280/2026/comments/31ba9fe8b8bdefd-4.jpg 1280w, https://www.jwz.org/images/scaled/1024/2026/comments/31ba9fe8b8bdefd-4.jpg 1024w, https://www.jwz.org/images/scaled/768/2026/comments/31ba9fe8b8bdefd-4.jpg 768w, https://www.jwz.org/images/scaled/640/2026/comments/31ba9fe8b8bdefd-4.jpg 640w, https://www.jwz.org/images/scaled/360/2026/comments/31ba9fe8b8bdefd-4.jpg 360w" SIZES="(max-width: 660px) 40vw, 29em" LOADING="lazy" data-size="1742x484"/></a></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Philipp Riederer		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266968</link>

		<dc:creator><![CDATA[Philipp Riederer]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 20:41:42 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266968</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266963&quot;&gt;jwz&lt;/a&gt;.

Yes. That&#039;s a rabbit hole I also did not descend into...]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266963">jwz</a>.</p>
<p>Yes. That's a rabbit hole I also did not descend into...</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Dave Slusher - Tech Stuff		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266967</link>

		<dc:creator><![CDATA[Dave Slusher - Tech Stuff]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 20:15:04 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266967</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266966&quot;&gt;jwz&lt;/a&gt;.

OK, sorry. I&#039;m out of ideas at this point. If it is any consolation, it is them and not you.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266966">jwz</a>.</p>
<p>OK, sorry. I'm out of ideas at this point. If it is any consolation, it is them and not you.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266966</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 20:13:33 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266966</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266964&quot;&gt;Dave Slusher - Tech Stuff&lt;/a&gt;.

Yup I just did that and it sent me down a branding verification rathole, see elsewhere in the thread...]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266964">Dave Slusher - Tech Stuff</a>.</p>
<p>Yup I just did that and it sent me down a branding verification rathole, see elsewhere in the thread...</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: D		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266965</link>

		<dc:creator><![CDATA[D]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 20:13:11 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266965</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266962&quot;&gt;jwz&lt;/a&gt;.

well you already wrote a privacy policy for Google might as well link to it from YouTube.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266962">jwz</a>.</p>
<p>well you already wrote a privacy policy for Google might as well link to it from YouTube.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Dave Slusher - Tech Stuff		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266964</link>

		<dc:creator><![CDATA[Dave Slusher - Tech Stuff]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 20:11:43 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266964</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266960&quot;&gt;jwz&lt;/a&gt;.

OK, try this:

In your Google Cloud thing, under Auth look in Audience. If your app is in Testing, you need to publish. I created one just now to try to find these options and that is what it defaulted to. This is also in a place where no sensible person would ever look for it.
&lt;P&gt;&lt;IMG SRC=&quot;https://www.jwz.org/images/2026/comments/6b0d98737f3ae60-6.jpg&quot; WIDTH=&quot;538&quot; HEIGHT=&quot;367&quot; data-size=&quot;538x367&quot;&gt;]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266960">jwz</a>.</p>
<p>OK, try this:</p>
<p>In your Google Cloud thing, under Auth look in Audience. If your app is in Testing, you need to publish. I created one just now to try to find these options and that is what it defaulted to. This is also in a place where no sensible person would ever look for it.</p>
<p><a HREF="https://cdn.jwz.org/images/2026/comments/6b0d98737f3ae60-6.jpg" data-size="538x367"><img SRC="https://cdn.jwz.org/images/2026/comments/6b0d98737f3ae60-6.jpg" WIDTH="538" HEIGHT="367" SRCSET="https://www.jwz.org/images/2026/comments/6b0d98737f3ae60-6.jpg 538w, https://www.jwz.org/images/scaled/360/2026/comments/6b0d98737f3ae60-6.jpg 360w" SIZES="(max-width: 660px) 40vw, 29em" LOADING="lazy" data-size="538x367"/></a></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266963</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 20:08:38 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266963</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266962&quot;&gt;jwz&lt;/a&gt;.

Is your application for personal use only?

[x] Yes [ ] No
If your app is not shared with anyone else or it will only have 100 users personally known to you, set your project&#039;s publish state to Testing. Production apps for personal use are not reviewed and will show the unverified app warning during sign-in.

Your app could not be submitted for verification for the following reasons:
Your application is for Personal use only]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266962">jwz</a>.</p>
<p>Is your application for personal use only?</p>
<p>[x] Yes [ ] No<br />
If your app is not shared with anyone else or it will only have 100 users personally known to you, set your project's publish state to Testing. Production apps for personal use are not reviewed and will show the unverified app warning during sign-in.</p>
<p>Your app could not be submitted for verification for the following reasons:<br />
Your application is for Personal use only</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266962</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 19:59:52 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266962</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266961&quot;&gt;Philipp Riederer&lt;/a&gt;.

Ok, it does seem to be set to testing, but when trying to change that I am now being sent down a rathole of &quot;Branding verification issues&quot;

Your home page URL does not include a link to your privacy policy.
Make sure your home page includes a link to your privacy policy. Learn more
Your home page does not explain the purpose of your app.

Jesus Fucking Christ.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266961">Philipp Riederer</a>.</p>
<p>Ok, it does seem to be set to testing, but when trying to change that I am now being sent down a rathole of "Branding verification issues"</p>
<p>Your home page URL does not include a link to your privacy policy.<br />
Make sure your home page includes a link to your privacy policy. Learn more<br />
Your home page does not explain the purpose of your app.</p>
<p>Jesus Fucking Christ.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Philipp Riederer		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266961</link>

		<dc:creator><![CDATA[Philipp Riederer]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 19:54:45 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266961</guid>

					<description><![CDATA[https://developers.google.com/identity/protocols/oauth2#expiration says that the refresh-tokens expire after 7 days if the client is set to &quot;testing&quot;. You should see the publishing status [here](https://console.cloud.google.com/auth/audience) (Google Auth Platform -&#062; Audience).]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p><a href="https://developers.google.com/identity/protocols/oauth2#expiration" rel="nofollow ugc">https://developers.google.com/identity/protocols/oauth2#expiration</a> says that the refresh-tokens expire after 7 days if the client is set to "testing". You should see the publishing status [here](<a href="https://console.cloud.google.com/auth/audience" rel="nofollow ugc">https://console.cloud.google.com/auth/audience</a>) (Google Auth Platform -&gt; Audience).</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266960</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 19:47:21 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266960</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266959&quot;&gt;Dave Slusher - Tech Stuff&lt;/a&gt;.

I did at one point stumble across some documentation claiming that the refresh token lasted forever unless the token was unused for &#062;6 months. When I read that I thought, &quot;welp that&#039;s clearly not what&#039;s happening&quot;.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266959">Dave Slusher - Tech Stuff</a>.</p>
<p>I did at one point stumble across some documentation claiming that the refresh token lasted forever unless the token was unused for &gt;6 months. When I read that I thought, "welp that's clearly not what's happening".</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Dave Slusher - Tech Stuff		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266959</link>

		<dc:creator><![CDATA[Dave Slusher - Tech Stuff]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 19:46:03 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266959</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266958&quot;&gt;jwz&lt;/a&gt;.

It&#039;s OK, this stuff is a nightmare. I have totally done this but in the past so my information has rotted. Is it possible the eternal one was created in the past and the 1 week expiration is more recent?

I walked through creating an OAuth app and could not see any options for controlling expiration. I&#039;m suspecting this expiration is automatic, out of your control and changed over time.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266958">jwz</a>.</p>
<p>It's OK, this stuff is a nightmare. I have totally done this but in the past so my information has rotted. Is it possible the eternal one was created in the past and the 1 week expiration is more recent?</p>
<p>I walked through creating an OAuth app and could not see any options for controlling expiration. I'm suspecting this expiration is automatic, out of your control and changed over time.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266958</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 19:33:01 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266958</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266957&quot;&gt;Dave Slusher - Tech Stuff&lt;/a&gt;.

I don&#039;t know how to answer that question...]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266957">Dave Slusher - Tech Stuff</a>.</p>
<p>I don't know how to answer that question...</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Dave Slusher - Tech Stuff		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266957</link>

		<dc:creator><![CDATA[Dave Slusher - Tech Stuff]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 19:31:38 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266957</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266956&quot;&gt;jwz&lt;/a&gt;.

Sorry, forgot to ask. Is this the Data API or the whatever the other one is, regular API that allows for control and creation.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266956">jwz</a>.</p>
<p>Sorry, forgot to ask. Is this the Data API or the whatever the other one is, regular API that allows for control and creation.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266956</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 19:28:16 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266956</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266954&quot;&gt;Dave Slusher - Tech Stuff&lt;/a&gt;.

I see a line that says &quot;Status: Enabled&quot; in the &quot;Additional information&quot; sidebar on the right. Is there a different place to look?]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266954">Dave Slusher - Tech Stuff</a>.</p>
<p>I see a line that says "Status: Enabled" in the "Additional information" sidebar on the right. Is there a different place to look?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Smaller Stanley		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266952</link>

		<dc:creator><![CDATA[Smaller Stanley]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 19:26:12 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266952</guid>

					<description><![CDATA[I think the last clue is the relevant one.&#160; I&#039;ve had the same problem.&#160; While I don&#039;t remember how I resolved it, it rings a bell that the desktop client doesn&#039;t expect to re-up the refresh token, while web clients do. (Or, I presume, iOS, but I work in web and once accidentally set up an account as desktop).
Not 100% on that, but I&#039;d focus on the client type too.
That said, google apis often fail without error codes and do other unpredictable things, so it could also just be google being google.]]></description>
			<content:encoded><![CDATA[<div class="geolocation">United States</div>
<p>I think the last clue is the relevant one.&nbsp; I've had the same problem.&nbsp; While I don't remember how I resolved it, it rings a bell that the desktop client doesn't expect to re-up the refresh token, while web clients do. (Or, I presume, iOS, but I work in web and once accidentally set up an account as desktop).<br />
Not 100% on that, but I'd focus on the client type too.<br />
That said, google apis often fail without error codes and do other unpredictable things, so it could also just be google being google.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jwz		</title>
		<link>https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266955</link>

		<dc:creator><![CDATA[jwz]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 19:25:38 +0000</pubDate>
		<guid isPermaLink="false">https://jwz.org/b/yk3r#comment-266955</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266953&quot;&gt;Mark T. Tomczak&lt;/a&gt;.

I don&#039;t know what a Google Workspace account is, so probably not?]]></description>
			<content:encoded><![CDATA[<div class="geolocation">Via Mastodon</div>
<p>In reply to <a href="https://www.jwz.org/blog/2026/02/youtube-oauth-api-fuckery/#comment-266953">Mark T. Tomczak</a>.</p>
<p>I don't know what a Google Workspace account is, so probably not?</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
