<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Oauth on Codes</title><link>https://codes.metacog.co.kr/tags/oauth/</link><description>Recent content in Oauth on Codes</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© {year} jeonck. Distributed under [MIT](https://opensource.org/licenses/MIT).</copyright><lastBuildDate>Mon, 21 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://codes.metacog.co.kr/tags/oauth/index.xml" rel="self" type="application/rss+xml"/><item><title>Google sign-in on a Streamlit app: st.login() is only half the gate</title><link>https://codes.metacog.co.kr/posts/streamlit-google-signin-is-not-an-allowlist/</link><pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate><guid>https://codes.metacog.co.kr/posts/streamlit-google-signin-is-not-an-allowlist/</guid><description>A successful Google sign-in proves someone owns a Google account — not that they may use your app. Without an allowlist the page is open to everyone, and a new OAuth client answers every sign-in with 403 until the consent screen is dealt with.</description></item><item><title>The sign-in gate is the one screen every visitor sees — mine said only "sign in"</title><link>https://codes.metacog.co.kr/posts/sign-in-gate-is-a-page-too/</link><pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate><guid>https://codes.metacog.co.kr/posts/sign-in-gate-is-a-page-too/</guid><description>A gated app shows its login screen to everyone and its actual product to almost nobody. Putting a live sample on that screen took a few lines — and immediately exposed a CDN that had been failing silently for anyone whose network was not mine.</description></item></channel></rss>