fix loose verification

This commit is contained in:
Ishaan Gupta 2026-05-09 20:44:56 +05:30
parent bee6f2d4e1
commit d3e36544ae
2 changed files with 58 additions and 7 deletions

View file

@ -475,14 +475,10 @@ export default function OnboardingPage() {
if (response.ok && data.found === true) {
const account =
source === "x" && data.handle ? ` @${data.handle}` : ""
const message =
source === "linkedin" && data.verified === false
? "LinkedIn profile link looks valid - press Enter to continue"
: `${SOURCE_NAME[source]} account${account} found - press Enter to continue`
setAccountLookup({
source,
status: "found",
message,
message: `${SOURCE_NAME[source]} account${account} found - press Enter to continue`,
})
return
}
@ -499,6 +495,15 @@ export default function OnboardingPage() {
return
}
if (response.ok && data.verified === false) {
setAccountLookup({
source,
status: "error",
message: `Could not verify ${SOURCE_NAME[source]} account. You can still continue.`,
})
return
}
setAccountLookup({
source,
status: "error",

View file

@ -87,15 +87,57 @@ function looksUnavailable(source: AccountSource, html: string) {
function linkedinFallback(account: ParsedAccount, status?: number) {
return Response.json({
found: true,
found: null,
verified: false,
reason: "valid_linkedin_profile_url",
reason: "unable_to_verify_linkedin",
handle: account.handle,
status,
url: account.url,
})
}
async function verifyXAccount(account: ParsedAccount, signal: AbortSignal) {
const oembedUrl = new URL("https://publish.twitter.com/oembed")
oembedUrl.searchParams.set("url", account.url)
const response = await fetch(oembedUrl, {
signal,
headers: {
Accept: "application/json",
"User-Agent":
"Mozilla/5.0 (compatible; SuperMemory/1.0; +https://supermemory.ai)",
},
})
if (response.status === 404 || response.status === 410) {
return Response.json({
found: false,
handle: account.handle,
status: response.status,
url: account.url,
})
}
if (!response.ok) {
return Response.json(
{
error: "Unable to verify account",
handle: account.handle,
status: response.status,
url: account.url,
},
{ status: 502 },
)
}
return Response.json({
found: true,
handle: account.handle,
status: response.status,
url: account.url,
})
}
export async function GET(request: Request) {
const { searchParams } = new URL(request.url)
const source = searchParams.get("source")
@ -118,6 +160,10 @@ export async function GET(request: Request) {
const timeoutId = setTimeout(() => controller.abort(), 7000)
try {
if (source === "x") {
return await verifyXAccount(account, controller.signal)
}
const response = await fetch(account.url, {
signal: controller.signal,
redirect: "follow",