Проблема с входом в Google с использованием React NativeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с входом в Google с использованием React Native

Сообщение Anonymous »

Я пытаюсь реализовать вход в Google в своем проекте, созданном с помощью React Native, как для Android, так и для iOS.
Судя по тому, как я написал код, API Google работает: я открываю приложение, нажимаю " войдите в систему с помощью Google», и откроется модальное окно Google, в котором вам нужно выбрать учетную запись Google для входа в систему.
Проблема в том, что после выбора учетной записи модальное окно Google закрывается, и я не перенаправляюсь на тот домашнюю страницу, поэтому я остаюсь на странице входа в систему. Но в моей консоли нет ошибки, может кто-нибудь сказать мне, нужно ли мне указывать перенаправление или я допустил ошибку при написании инструкций?
// ...other imports...
import { makeRedirectUri } from "expo-auth-session";
import * as Google from "expo-auth-session/providers/google";
import * as WebBrowser from "expo-web-browser";

WebBrowser.maybeCompleteAuthSession();

type Props = {};

const Login = (props: Props) => {
const { isLoggedIn, doLogin, ottieniTema }: any = useGlobal();
const navigation: any = useNavigation();
const [topShow, setTopShow] = useState(true);
const [showPassword, setShowPassword] = useState(false);
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");

// Google login:
const [userInfo, setUserInfo] = useState(null);
const redirectUri = makeRedirectUri({
scheme: "lemiefiabe",
});

const [request, response, promptAsync] = Google.useAuthRequest({
androidClientId: "my-android-client-id",
iosClientId: "my-ios-client-id",
redirectUri,
scopes: ["profile", "email"],
});

useEffect(() => {
if (response?.type === "success") {
const { authentication } = response;
if (authentication?.accessToken) {
getUserInfo(authentication.accessToken);
}
} else if (response?.type === "error") {
console.error("Errore di autenticazione:", response.error);
}
}, [response]);

const getUserInfo = async (accessToken: string) => {
try {
const userInfoResponse = await fetch(
"https://www.googleapis.com/oauth2/v3/userinfo",
{
headers: { Authorization: `Bearer ${accessToken}` },
}
);
const user = await userInfoResponse.json();
setUserInfo(user);
await doLoginWithGoogle(user);
} catch (error) {
console.log("Errore nel recupero delle informazioni utente: ", error);
}
};

const doLoginWithGoogle = async (user: any) => {
try {
const res = await doLogin(user.email, null, "google", user.sub);
if (res.success) {
navigation.navigate("AccountSelection");
}
} catch (error) {
console.log("Errore durante il login con Google: ", error);
}
};

return (



{
promptAsync();
}}
>


Accedi con Google





);
};

export default Login;



Подробнее здесь: https://stackoverflow.com/questions/792 ... act-native
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»