Please check this auth code:
const login = async (): Promise => {
try {
const redirectURI = Linking.createURL("/");
const response = await account.createOAuth2Token(
OAuthProvider.Google,
redirectURI
);
if (!response) {
throw new AuthError("OAuth2 response was empty");
}
const browserResult = await openAuthSessionAsync(
response.toString(),
redirectURI
).catch((error) => {
throw new AuthError("Failed to open auth session", error);
});
if (browserResult.type !== "success") {
throw new AuthError(`Auth session failed: ${browserResult.type}`);
}
const url = new URL(browserResult.url);
const secret = url.searchParams.get("secret");
const userId = url.searchParams.get("userId");
if (!secret || !userId) {
throw new AuthError(
"Missing authentication parameters from callback URL"
);
}
const session = await account
.createSession(userId, secret)
.catch((error) => {
throw new AuthError("Failed to create session", error);
});
if (!session) {
throw new AuthError("Session creation returned empty response");
}
return true;
} catch (error) {
if (error instanceof AuthError) {
console.error(Authentication failed: ${error.message}, error.cause);
} else {
console.error("Unexpected authentication error:", error);
}
return false;
}
};