Я пытаюсь реализовать вход в 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
Проблема с входом в Google с использованием React Native ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1733388223
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;
Подробнее здесь: [url]https://stackoverflow.com/questions/79253920/problem-with-google-login-using-react-native[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия