You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
OAuth: link a social account from Android via Custom Tabs #39
Part of #38 — Social account linking (OAuth) and full cross-post destination support
Blocked on registered Android redirect URIs.
Web behaviour: the Integrations page links Mastodon, Bluesky, LinkedIn, X/Twitter and GitHub.
Android can only read what is already linked.
Launch /api/auth/{provider}/authorize in a Custom Tab (never a WebView — it must not see
the user's credentials, and Custom Tabs is what the platform expects for OAuth).
Handle the redirect back with an App Link / custom-scheme intent filter, then confirm with /api/auth/{provider}/status.
Surface the failure paths clearly; an interrupted OAuth round-trip must not leave a
half-linked identity.
Blocked until: the owner registers redirect URIs for the Android app with each provider and
on the InterlinedList side.
Tests: callback parsing; status confirmation; cancelled-flow cleanup.
Filed from the parity review of feature/parity-wip @ 14d7795 against interlinedlist.com (OpenAPI /api/openapi.json, 233 paths) and the public help centre.
Blocked — cannot implement yet. Here is exactly what is needed to unblock.
Picked this up in the parity sweep and stopped at the redirect contract. Everything else in the flow (Custom Tabs launch, intent filter, status confirmation, cancelled-flow cleanup) is ready to build the moment these are answered.
1. Redirect URI scheme — which one is registered server-side?
The server's /api/auth/{provider}/callback currently redirects to a web page. For Android we need one of:
Option
Redirect target
Notes
A. App Link (preferred)
https://interlinedlist.com/auth/android/callback
Needs /.well-known/assetlinks.json hosted on interlinedlist.com containing the app's package name + SHA-256 signing cert fingerprints (debug and release). Most secure — no other app can claim it.
B. Custom scheme
interlinedlist://oauth/callback
No server hosting required, but any app can register the scheme. Acceptable with PKCE.
Which do you want? If A, we also need the release keystore SHA-256 to publish in assetlinks.json.
2. Per-provider registration
Each provider's developer console needs the Android redirect URI added to its allow-list. For each of Mastodon, Bluesky, LinkedIn, X/Twitter, GitHub, please confirm:
Is the Android redirect URI registered?
Does the existing web OAuth client get reused, or is there a separate Android client id?
Does /api/auth/{provider}/authorize accept a redirect_uri (or return_to/state) query parameter so the app can ask to be returned to, or is the redirect fixed server-side?
3. Token hand-off back to the app
After /callback completes on the server, how does the app learn the result?
Does the callback redirect carry anything in the URL (e.g. ?status=ok&provider=bluesky), or is the app expected to just poll GET /api/auth/{provider}/status afterwards?
Is the linking performed against the bearer token the app already holds, or does it require the web cookie session? (Several /api/auth/* endpoints were previously observed to be cookie-gated — POST /api/auth/{provider}/link needs confirming for bearer auth.)
4. Mastodon specifics
Mastodon is per-instance. Does /api/auth/mastodon/authorize take an instance host parameter, and is app registration done server-side per instance, or does the client need to supply one?
What I can do without this
Issues #40, #41, #42 and #43 in this epic do not depend on the OAuth round-trip and are being worked separately.
Leaving this open and unimplemented until the above is settled.
Activity
Adron commentedon Sep 16, 2026
Blocked — cannot implement yet. Here is exactly what is needed to unblock.
Picked this up in the parity sweep and stopped at the redirect contract. Everything else in the flow (Custom Tabs launch, intent filter, status confirmation, cancelled-flow cleanup) is ready to build the moment these are answered.
1. Redirect URI scheme — which one is registered server-side?
The server's
/api/auth/{provider}/callbackcurrently redirects to a web page. For Android we need one of:https://interlinedlist.com/auth/android/callback/.well-known/assetlinks.jsonhosted on interlinedlist.com containing the app's package name + SHA-256 signing cert fingerprints (debug and release). Most secure — no other app can claim it.interlinedlist://oauth/callbackWhich do you want? If A, we also need the release keystore SHA-256 to publish in
assetlinks.json.2. Per-provider registration
Each provider's developer console needs the Android redirect URI added to its allow-list. For each of Mastodon, Bluesky, LinkedIn, X/Twitter, GitHub, please confirm:
/api/auth/{provider}/authorizeaccept aredirect_uri(orreturn_to/state) query parameter so the app can ask to be returned to, or is the redirect fixed server-side?3. Token hand-off back to the app
After
/callbackcompletes on the server, how does the app learn the result??status=ok&provider=bluesky), or is the app expected to just pollGET /api/auth/{provider}/statusafterwards?/api/auth/*endpoints were previously observed to be cookie-gated —POST /api/auth/{provider}/linkneeds confirming for bearer auth.)4. Mastodon specifics
Mastodon is per-instance. Does
/api/auth/mastodon/authorizetake an instance host parameter, and is app registration done server-side per instance, or does the client need to supply one?What I can do without this
Issues #40, #41, #42 and #43 in this epic do not depend on the OAuth round-trip and are being worked separately.
Leaving this open and unimplemented until the above is settled.