Google Auth с ошибкой выдачи React Native ExpoAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Google Auth с ошибкой выдачи React Native Expo

Сообщение Anonymous »

Правда в том, что эта проблема у меня уже несколько дней, и я вхожу в небольшое отчаяние... поэтому буду очень признателен за любую помощь.
Я экспериментирую проблемы, когда я создаю свое приложение (все еще в разработке) и пробую аутентификацию Google,
Я настроил всю облачную часть Google, экран согласия с тестовыми пользователями..., Oauth2.0 с Sha -1...
А еще реализовал expo-auth-session/providers/google в проекте React Native и следовал некоторым руководствам.
Я также создал новые учетные данные с помощью команды «eas Credentials» и сгенерировал sha-1 для Android, я использовал его, здесь я должен подчеркнуть, что у меня есть еще 3, но я использую только один новый (он отображается как по умолчанию)
Проблема в том, что это после запуска выставки npx:android хотя я вижу экран согласия и принимаю его, после его перезагрузки в «ответе» возвращается ноль.
Я обращаюсь к вам:
React.useEffect(() => {
// This returns null response.
console.log("trigger response -> ", response)
handleSingInWithGoogle()
}, [response])

А это полный код моего входа в систему.
import React, {useContext, useEffect, useState} from 'react';
import {Form, H4, Spinner, Input, View, Text, H6} from 'tamagui'
import {Button} from "tamagui.config"
import {Pressable, SafeAreaView, Platform, Image, StyleSheet} from "react-native";
import {loadUser, login, register} from "~/services/AuthService";
import * as WebBrowser from "expo-web-browser";
import * as Google from "expo-auth-session/providers/google";
import {getUserInfo} from "~/services/GoogleAuthService";
import {useAuth} from "~/contexts/NewAuthContext";
import {useRouter} from "expo-router";

WebBrowser.maybeCompleteAuthSession();

// @ts-ignore
const Login = () => {
const { signIn } = useAuth();
const router = useRouter()
const [isLoadingLogin, setIsLoadingLogin] = useState(false)
const [email, setEmail] = useState("")
const [password, setPassword] = useState("")
const [errors, setErrors] = useState({})
// const {setUser} = useContext(AuthContext);

const [request, response, promptAsync] = Google.useAuthRequest({
androidClientId: "android id from google cloud Oauth2.0",
// expoClientId: "TU_EXPO_CLIENT_ID", // Opcional, para pruebas en Expo Go
});

React.useEffect(() => {
console.log("trigger response -> ", response)
handleSingInWithGoogle()
}, [response])

async function handleSingInWithGoogle(){
// Here the response is always "null"....
console.log("response", response)
if(response?.type === "success"){
// It never happens because it is always null...
console.log("response success", response)
const googleAccessToken = response.authentication.accessToken

const googleUserData = await getUserInfo(googleAccessToken)

try {
await register({
"email": googleUserData.email,
"name": googleUserData.given_name,
"surname": googleUserData.family_name,
"picture": googleUserData.picture,
"google_id": googleUserData.id,
"register_type": "google_auth",
"device_name": `${Platform.OS} - ${Platform.Version}`
})
const user = await loadUser();
signIn(user)
} catch (e) {
console.error("error login-in with google")
}
}
}

function validateForm() {
const newErrors = {};

if (!email.trim()) {
newErrors.email = "empty";
}

if (!password.trim()) {
newErrors.password = "empty";
}

setErrors(newErrors);
return Object.keys(newErrors).length === 0;
}

async function submitLoginForm(){
console.log("entra en submitLoginForm")
try {
setIsLoadingLogin(true)

// Solo continúa si la validación es exitosa
if (!validateForm()) {
return; // Detiene la ejecución si hay errores
}

await login({
email,
password,
device_name: `${Platform.OS} - ${Platform.Version}`
});

const user = await loadUser();
console.info("login function user : ", user)
signIn(user)

} catch(e){
if (e.response.status === 422){
setErrors({password: "credentials not found"});
}
} finally {
setIsLoadingLogin(false)
}
}

function redirectRegister() {
setErrors({})
router.push("/(auth)/register")
}

return (

submitLoginForm()}
backgroundColor="#e3e3e3"
padding="$10"
>

Log-in

{/*{JSON.stringify()}*/}



{
setEmail(text);
// Limpia el error cuando el usuario empieza a escribir
if (errors.email) {
setErrors(prev => ({ ...prev, email: null }));
}
}}
keyboardType="email-address"
autoCapitalize="none"
/>
{errors.email && El email no puede estar vacio}



{errors.password && errors.password !== 'credentials not found' && La contraseña no puede estar vacía}
{errors.password && errors.password === 'credentials not found' && No existe ningun registro con ese email y contraseña}




No tienes cuenta? Crea una ahora!


promptAsync()}
style={({ pressed }) => ({
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
padding: 10,
borderRadius: 30,
backgroundColor: pressed ? '#f0f0f0' : '#ffffff',
borderWidth: 1,
borderColor: '#dcdcdc',
})}
>

Entrar con Google






: undefined}>
{isLoadingLogin ? 'Iniciando sesión...' : 'Iniciar sesión'}






)
}

const styles = StyleSheet.create({
errorText: {
paddingTop: 4,
paddingLeft: 3,
color: 'red',
fontSize: 12,
},
});

export default Login;


Подробнее здесь: https://stackoverflow.com/questions/793 ... wing-error
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Google Auth с ошибкой выдачи React Native Expo
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • React Native Expo + Firebase Auth: Component Auth еще не зарегистрирована, JS Engine: Hermes
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • React Native Expo + Firebase Auth: Component Auth еще не зарегистрирована, JS Engine: Hermes
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • React Native Expo + Firebase Auth: Component Auth еще не зарегистрирована, JS Engine: Hermes
    Anonymous » » в форуме Android
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Я столкнулся с ошибкой входа в систему Google 10 Ошибка разработчика в React Native Expo
    Anonymous » » в форуме Android
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

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