Skocz do zawartości
Szukaj na Pecetowiczu
  • Utwórz konto
Grzegorz jest na Pecetowiczu
Aby wyświetlić pełny profil i nawiązać kontakt z Grzegorz, zaloguj się lub utwórz konto.

Grzegorz

Grafik
  • Postów

    250
  • Dołączył

  • Ostatnia wizyta

3 obserwujących

  • pexo
  • elvis moeller
  • Mativve

O Grzegorz

  • Urodziny 30.05.1999

Informacje

  • Imię
    Grzegorz
  • Miejscowość
  • Zawód
    Informatyk

Profile społecznościowe

Ostatnie wizyty

9 629 wyświetleń profilu
  • Piotr Bartnik

    Piotr Bartnik

  • chrumcio

    chrumcio

  • Obscure

    Obscure

  • Kacper Chilicki

    Kacper Chilicki

  • Melankol

    Melankol

Biogram

Zainteresowania

Gry, Pc, Grafika

Osiągnięcia Grzegorz

Wschodząca gwiazda

Wschodząca gwiazda (9/14)

  • Oddany społeczności Unikat
  • Pierwszy post
  • Współtwórca
  • Pierwszy tydzień zakończony
  • Miesiąc później

Najnowsze odznaki

139

Reputacja

2

Odpowiedzi społeczności

  1. nie jestem pewien czy poprawnie ale podsyłam co mam wraz z wynikiem : import React, { useState } from 'react'; import { View, Text, TextInput, Button } from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; const LoginScreen = ({ navigation }) => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(); const handleLogin = async () => { try { const response = await fetch('http://localhost:5000/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email, password }), }); if (response.ok) { const data = await response.json(); // Log zaciągniętego z serwera identyfikatora sesji console.log('Otrzymany identyfikator sesji:', data.sessionId); // Uwaga: Wartości przechowywane w AsyncStorage powinny być w formie tekstu JSON const storedToken = JSON.stringify(data.sessionId); // Log identyfikatora sesji przed zapisaniem do AsyncStorage console.log('Token sesji przed zapisaniem do AsyncStorage:', storedToken); await AsyncStorage.setItem('userToken', storedToken); // Log identyfikatora sesji po zapisaniu do AsyncStorage console.log('Token sesji w AsyncStorage:', storedToken); navigation.navigate('Home'); } else { console.log('Błąd logowania'); } } catch (error) { console.error('Wystąpił błąd:', error); } }; return ( <View> <Text>Email:</Text> <TextInput value={email} onChangeText={setEmail} placeholder="Wprowadź email" autoCapitalize="none" /> <Text>Hasło:</Text> <TextInput value={password} onChangeText={setPassword} placeholder="Wprowadź hasło" secureTextEntry /> <Button title="Zaloguj się" onPress={handleLogin} /> </View> ); }; export default LoginScreen; import React, { useEffect, useState } from 'react'; import { View, Text, Button } from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; const HomeScreen = ({ navigation }) => { const [user, setUser] = useState(null); useEffect(() => { const checkLoginStatus = async () => { try { const userToken = await AsyncStorage.getItem('userToken'); if (userToken) { // Sparsowanie tokenu const parsedToken = JSON.parse(userToken); console.log('Sparsowany token:', parsedToken); // Pobranie danych z parsowanego tokenu const sessionId = parsedToken.sessionId; const userId = parsedToken.userId; // Tworzenie nagłówków żądania const headers = { Cookie: `connect.sid=${sessionId}`, }; // Przygotowanie żądania do serwera const requestOptions = { headers, credentials: 'include', mode: 'cors', }; // Wysłanie żądania do serwera const response = await fetch('http://localhost:5000/me', requestOptions); // Dane po odebraniu odpowiedzi console.log('Dane po odebraniu odpowiedzi:', { status: response.status, headers: response.headers, }); if (response.ok) { const userData = await response.json(); setUser(userData); } else { console.log('Błąd pobierania danych użytkownika:', response.status); const responseData = await response.text(); console.log('Odpowiedź serwera:', responseData); } } else { navigation.navigate('Login'); } } catch (error) { console.error('Wystąpił błąd:', error); } }; checkLoginStatus(); }, [navigation]); const handleLogout = async () => { await AsyncStorage.removeItem('userToken'); navigation.navigate('Login'); }; return ( <View> {user ? ( <View> <Text>Witaj, {user.name}!</Text> <Button title="Wyloguj się" onPress={handleLogout} /> </View> ) : ( <Text>Ładowanie...</Text> )} </View> ); }; export default HomeScreen; Otrzymany identyfikator sesji: kdz1owVrgwS350B4YQAiwqTkRhXueNfw LoginScreen.js:29 Token sesji przed zapisaniem do AsyncStorage: "kdz1owVrgwS350B4YQAiwqTkRhXueNfw" LoginScreen.js:34 Token sesji w AsyncStorage: "kdz1owVrgwS350B4YQAiwqTkRhXueNfw" index.js:24 accessibilityLabel is deprecated. Use aria-label. warnOnce @ index.js:24 createDOMProps @ index.js:297 createElement @ index.js:21 (anonymous) @ index.js:109 renderWithHooks @ react-dom.development.js:16305 updateForwardRef @ react-dom.development.js:19226 beginWork @ react-dom.development.js:21636 beginWork$1 @ react-dom.development.js:27426 performUnitOfWork @ react-dom.development.js:26560 workLoopSync @ react-dom.development.js:26466 renderRootSync @ react-dom.development.js:26434 performConcurrentWorkOnRoot @ react-dom.development.js:25738 workLoop @ scheduler.development.js:266 flushWork @ scheduler.development.js:239 performWorkUntilDeadline @ scheduler.development.js:533 Show 15 more frames Show less index.js:24 Image: style.resizeMode is deprecated. Please use props.resizeMode. warnOnce @ index.js:24 extractNonStandardStyleProps @ index.js:57 (anonymous) @ index.js:177 renderWithHooks @ react-dom.development.js:16305 updateForwardRef @ react-dom.development.js:19226 beginWork @ react-dom.development.js:21636 beginWork$1 @ react-dom.development.js:27426 performUnitOfWork @ react-dom.development.js:26560 workLoopSync @ react-dom.development.js:26466 renderRootSync @ react-dom.development.js:26434 performConcurrentWorkOnRoot @ react-dom.development.js:25738 workLoop @ scheduler.development.js:266 flushWork @ scheduler.development.js:239 performWorkUntilDeadline @ scheduler.development.js:533 Show 14 more frames Show less index.js:24 Image: style.tintColor is deprecated. Please use props.tintColor. warnOnce @ index.js:24 extractNonStandardStyleProps @ index.js:60 (anonymous) @ index.js:177 renderWithHooks @ react-dom.development.js:16305 updateForwardRef @ react-dom.development.js:19226 beginWork @ react-dom.development.js:21636 beginWork$1 @ react-dom.development.js:27426 performUnitOfWork @ react-dom.development.js:26560 workLoopSync @ react-dom.development.js:26466 renderRootSync @ react-dom.development.js:26434 performConcurrentWorkOnRoot @ react-dom.development.js:25738 workLoop @ scheduler.development.js:266 flushWork @ scheduler.development.js:239 performWorkUntilDeadline @ scheduler.development.js:533 Show 14 more frames Show less HomeScreen.js:16 Sparsowany token: kdz1owVrgwS350B4YQAiwqTkRhXueNfw HomeScreen.js:35 GET http://localhost:5000/me 401 (Unauthorized) (anonymous) @ HomeScreen.js:35 asyncGeneratorStep @ asyncToGenerator.js:3 _next @ asyncToGenerator.js:22 Promise.then (async) asyncGeneratorStep @ asyncToGenerator.js:12 _next @ asyncToGenerator.js:22 (anonymous) @ asyncToGenerator.js:27 (anonymous) @ asyncToGenerator.js:19 checkLoginStatus @ HomeScreen.js:9 (anonymous) @ HomeScreen.js:59 commitHookEffectListMount @ react-dom.development.js:23150 commitPassiveMountOnFiber @ react-dom.development.js:24931 commitPassiveMountEffects_complete @ react-dom.development.js:24891 commitPassiveMountEffects_begin @ react-dom.development.js:24878 commitPassiveMountEffects @ react-dom.development.js:24866 flushPassiveEffectsImpl @ react-dom.development.js:27039 flushPassiveEffects @ react-dom.development.js:26984 performSyncWorkOnRoot @ react-dom.development.js:26076 flushSyncCallbacks @ react-dom.development.js:12042 commitRootImpl @ react-dom.development.js:26959 commitRoot @ react-dom.development.js:26682 finishConcurrentRender @ react-dom.development.js:25981 performConcurrentWorkOnRoot @ react-dom.development.js:25809 workLoop @ scheduler.development.js:266 flushWork @ scheduler.development.js:239 performWorkUntilDeadline @ scheduler.development.js:533 Show 22 more frames Show less HomeScreen.js:38 Dane po odebraniu odpowiedzi: {status: 401, headers: Headers} HomeScreen.js:47 Błąd pobierania danych użytkownika: 401 HomeScreen.js:49 Odpowiedź serwera: {"msg":"Proszę zalogować się na swoje konto!"} Otrzymany identyfikator sesji: kdz1owVrgwS350B4YQAiwqTkRhXueNfw LoginScreen.js:29 Token sesji przed zapisaniem do AsyncStorage: "kdz1owVrgwS350B4YQAiwqTkRhXueNfw" LoginScreen.js:34 Token sesji w AsyncStorage: "kdz1owVrgwS350B4YQAiwqTkRhXueNfw" Sparsowany token: kdz1owVrgwS350B4YQAiwqTkRhXueNfw GET http://localhost:5000/me 401 (Unauthorized) Dane po odebraniu odpowiedzi: {status: 401, headers: Headers} HomeScreen.js:47 Błąd pobierania danych użytkownika: 401 HomeScreen.js:49 Odpowiedź serwera: {"msg":"Proszę zalogować się na swoje konto!"}
  2. zaćmę mam, co mam sparsować?
  3. Logi z Backendu Próba logowania użytkownika: grzegorzpaluch.krk@gmail.com Pomyślnie zalogowano: grzegorzpaluch.krk@gmail.com Session ID: IAvpQvVvYBH87eKstkGMJyUawrS_rknf Nagłówki żądania od klienta: { host: 'localhost:5000', connection: 'keep-alive', 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"', 'sec-ch-ua-mobile': '?0', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 'sec-ch-ua-platform': '"Windows"', accept: '*/*', origin: 'http://localhost:19006', 'sec-fetch-site': 'same-site', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', referer: 'http://localhost:19006/', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7', cookie: 'connect.sid=s%3Af1P_tS9UA90NWum1I_xjdS51Nao3zOi8.F4%2Fw14w4KxJahFlAiDyWEjCcPCAD2E9xnSgIN56E5Io' } ID sesji przekazywane do endpointa /me: NSmcrwzqjzFbW8XyZibjVvfsSJYFlG6p Brak zalogowanego użytkownika
  4. @aXenDev Przerobiłem kod gdzie pobiera prosto z serwera ID i faktycznie udało mi się to że przekazuje bez ingerencji z JSON. AsyncStorage również poprawnie przechowuje dane Otrzymany identyfikator sesji: P2exzuzVMlB4a0ub-zMG4hpxW0hSL7wk LoginScreen.js:24 Token sesji w AsyncStorage: P2exzuzVMlB4a0ub-zMG4hpxW0hSL7wk Ale wciąż jest zong w tym miejscu, po stronie backendu wypluwa całowicie inny hash const userToken = await AsyncStorage.getItem('userToken'); if (userToken) { const response = await fetch('http://localhost:5000/me', { headers: { Cookie: `connect.sid=${userToken}`, // Przekazanie ciasteczka sesji }, }); Tak patrzę na ten kod i zastanawiam sie czy czego w tym endpoint nie zepsułem: export const Me = async (req, res) => { console.log('ID sesji przekazywane do endpointa /me:', req.sessionID); if (!req.session.userId) { return res.status(401).json({ msg: "Proszę zalogować się na swoje konto!" }); } const user = await prisma.user.findUnique({ where: { id: req.session.userId, }, include: { profile: { include: { contracts: true, }, }, }, }); if (!user) { return res.status(404).json({ msg: "Użytkownik nie został znaleziony" }); } res.status(200).json(user); };
  5. Ale gdzie tu jest błąd 😄 import React, { useState } from 'react'; import { View, Text, TextInput, Button } from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; const LoginScreen = ({ navigation }) => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(); const handleLogin = async () => { try { const response = await fetch('http://localhost:5000/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email, password }), }); if (response.ok) { const data = await response.json(); await AsyncStorage.setItem('userToken', data.sessionId); navigation.navigate('Home'); } else { console.log('Błąd logowania'); } } catch (error) { console.error('Wystąpił błąd:', error); } }; return ( <View> <Text>Email:</Text> <TextInput value={email} onChangeText={setEmail} placeholder="Wprowadź email" autoCapitalize="none" /> <Text>Hasło:</Text> <TextInput value={password} onChangeText={setPassword} placeholder="Wprowadź hasło" secureTextEntry /> <Button title="Zaloguj się" onPress={handleLogin} /> </View> ); }; export default LoginScreen; import React, { useEffect, useState } from 'react'; import { View, Text, Button } from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; const HomeScreen = ({ navigation }) => { const [user, setUser] = useState(null); useEffect(() => { const checkLoginStatus = async () => { try { const userToken = await AsyncStorage.getItem('userToken'); if (userToken) { const response = await fetch('http://localhost:5000/me', { headers: { Authorization: `Bearer ${userToken}`, }, }); if (response.ok) { const userData = await response.json(); setUser(userData); } else { console.log('Błąd pobierania danych użytkownika'); } } else { navigation.navigate('Login'); } } catch (error) { console.error('Wystąpił błąd:', error); } }; checkLoginStatus(); }, [navigation]); const handleLogout = async () => { await AsyncStorage.removeItem('userToken'); navigation.navigate('Login'); }; return ( <View> {user ? ( <View> <Text>Witaj, {user.name}!</Text> <Button title="Wyloguj się" onPress={handleLogout} /> </View> ) : ( <Text>Ładowanie...</Text> )} </View> ); }; export default HomeScreen; Komunikat: HomeScreen.js:13 GET http://localhost:5000/me 401 (Unauthorized) HomeScreen.js:23 Błąd pobierania danych użytkownika w postman sesja utrzymuje sie:
  6. Wróć!!! masz racje. Ale nie mogę znaleźć nic na ten temat w sieci
  7. @aXenDev Nie jestem programistą że się znam ale według mnie to jest ten moment req.session.userId = user.id; await req.session.save();
  8. @aXenDev pytasz o ten moment? JSON res.status(200).json({ uid, name, email, role, sessionId: req.sessionID }); Jeśli tak zwracam to w taki sposób ponieważ po stronie klienta nie przekazywało to sessionId
  9. Ogółem coś się popsuło i nie było mnie słychać... wykorzystałem asyncStorage ale... Połączenie backend - > web aplikacja działa i normalnie sesja poprawnie działa szczytuje session id .. Wszystko OK! Natomiast w połączeniu backend -- > aplikacja moblina od samego początku miałem problem z przekazaniem i autoryzacja session ID 😕 Nie chciało mi wogóle przekazać, po stronie backendu według konsoli elegancko tworzyło id ale po stronie klienta załamka. Wymyśliłem ze przez json przekaże podczas logowanie session id... i zadziałało ALEEEEE o to dane jake wychodziły: Backend Logowanie: Próba logowania użytkownika: grzegorzpaluch.krk@gmail.com Pomyślnie zalogowano: grzegorzpaluch.krk@gmail.com Session ID: KgebebNor7bFOaUFiY-rSv4HMpkX8iaM Sesja wydrukowana w body dla testów: ( ZGADZA SIE!) Session ID from state: KgebebNor7bFOaUFiY-rSv4HMpkX8iaM Sesja przekazana do wykonania endpointa /ME która wymaga autoryzacji id (Też się zgadza) Session ID sent to /me endpoint: KgebebNor7bFOaUFiY-rSv4HMpkX8iaM A tu jakie ID dochodzi do endpointa...: ID sesji przekazywane do endpointa /me: JTW80_qZ0pJcmvtJ54l7IdTqlfTKpMKS O co chodzi xDDD??? Podejrzewam że coś popsuło się w backendzie albo niepoprawnie zrobiłem: index.js import express from "express"; import cors from "cors"; import session from "express-session"; import dotenv from "dotenv"; import { PrismaClient } from "@prisma/client"; // Importuj klienta Prisma import UserRoute from "./routes/UserRoute.js"; import AuthRoute from "./routes/AuthRoute.js"; import ContractRoute from "./routes/ContractRoute.js"; import RoutesRoute from "./routes/RoutesRoute.js"; import RecordRout from "./routes/RecordRoute.js"; import ImageRoute from "./routes/ImageRoute.js"; import CountRoute from "./routes/CountRoute.js"; import CommuniqueRoute from "./routes/CommuniqueRoute.js"; import WorkLogRoute from "./routes/WorkLogRoute.js"; import XLSXRoute from "./routes/XLSXRoute.js"; dotenv.config(); // const cors = require('cors'); const app = express(); const API_BASE_URL = 'http://<adres_IP_maszyny_hostującej>:5000'; app.use(express.json()); app.use(cors({ origin: "*", credentials: true })); // app.use(cors({ credentials: true })); // app.use(cors({ origin: '*', credentials: true })); // app.use(cors({ origin: "http://localhost:19006", credentials: true })); // app.use(cors({ origin: "http://localhost:3000", credentials: true })); // Inicjalizacja klienta Prisma const prisma = new PrismaClient(); app.use( session({ secret: process.env.SESS_SECRET, resave: true, saveUninitialized: true, // saveUninitialized: false, cookie: { secure: "auto", }, }) ); // app.use((req, res, next) => { // console.log("Session ID:", req.sessionID); // console.log("Session Data:", req.session); // next(); // }); app.get('/test', (req, res) => { if (req.session.userId) { res.send(`Sesja jest aktywna dla użytkownika o ID: ${req.session.userId}`); } else { res.status(401).send('Brak aktywnej sesji'); } }); app.use(AuthRoute); app.use(UserRoute); app.use(ContractRoute); app.use(RoutesRoute); app.use(RecordRout); app.use(ImageRoute); app.use(CountRoute); app.use(CommuniqueRoute); app.use(WorkLogRoute); app.use(XLSXRoute); app.listen(process.env.APP_PORT, () => { console.log("Server up and running..."); }); app.get("/", (req, res) => { res.send("Witaj w aplikacji!"); }); Auth.js import { PrismaClient } from '@prisma/client'; import argon2 from 'argon2'; import moment from 'moment'; const prisma = new PrismaClient(); export const Login = async (req, res) => { console.log('Próba logowania użytkownika:', req.body.email); const user = await prisma.user.findUnique({ where: { email: req.body.email, }, }); if (!user) { console.log('Użytkownik nie został znaleziony'); return res.status(404).json({ msg: 'Użytkownik nie został znaleziony' }); } const match = await argon2.verify(user.password, req.body.password); if (!match) { console.log('Błędne hasło'); return res.status(400).json({ msg: 'Błędne hasło' }); } req.session.userId = user.id; await req.session.save(); const uid = user.id; const name = user.name; const email = user.email; const role = user.role; console.log('Pomyślnie zalogowano:', email); console.log('Session ID:', req.sessionID); // Zwróć identyfikator sesji w treści odpowiedzi JSON res.status(200).json({ uid, name, email, role, sessionId: req.sessionID }); }; export const Me = async (req, res) => { console.log('ID sesji przekazywane do endpointa /me:', req.sessionID); if (!req.session.userId) { return res.status(401).json({ msg: "Proszę zalogować się na swoje konto!" }); } const user = await prisma.user.findUnique({ where: { id: req.session.userId, }, include: { profile: { include: { contracts: true, }, }, }, }); if (!user) { return res.status(404).json({ msg: "Użytkownik nie został znaleziony" }); } res.status(200).json(user); }; Może ktoś coś zauważy...
  10. -,- @aXenDev polecasz coś innego użyć?
  11. Coś takiego podają w Internetach 😄
  12. Hey, próbuje stworzyć swoją pierwszą aplikacje mobilną i napotkałem się z pewnym problem. Mam stworzony backend w node. Po zalogowaniu endpoint tworzy session ((NIE TOKEN JWT) nie używam jwt tylko sesssion koniec kropka 😄) Nie jestem pewien czy dobrze rozumiem logikę aplikacji mobilnej ale: Jeśli używam session i chce żeby endpointy które wymagają session id działały to musze id zapisać w cookie aplikacji mobilnej tak? jeśli tak to mam problem że to wszystko nie działa 😄 pliki index.js import { enable, configure } from 'react-native-cookies'; enable(); // Włącza obsługę plików cookie configure(); // Konfiguruje domyślne ustawienia HomeScreen.js import React, { useEffect } from 'react'; import { View, Text } from 'react-native'; import { Me } from '../services/AuthServices'; import CookieManager from 'react-native-cookies'; const HomeScreen = ({ navigation }) => { useEffect(() => { const checkAndFetchUserData = async () => { try { // Sprawdź, czy masz zapisane pliki cookie const sessionCookie = await CookieManager.get('http://localhost:5000', 'session'); if (!sessionCookie) { console.error('Użytkownik nie jest zalogowany.'); // Tutaj możesz przekierować użytkownika do ekranu logowania navigation.navigate('Login'); return; } // Kontynuuj pobieranie danych /me try { const response = await Me(); console.log('Dane użytkownika:', response.data); } catch (error) { console.error('Błąd podczas pobierania danych użytkownika', error); } } catch (error) { console.error('Błąd podczas pobierania ciasteczka', error); } }; // Sprawdź i pobierz dane po zamontowaniu komponentu checkAndFetchUserData(); }, [navigation]); return ( <View> <Text>Witaj!</Text> {/* Pozostała część kodu komponentu */} </View> ); }; export default HomeScreen; AuthServices.js import axios from 'axios'; const API_BASE_URL = 'http://localhost:5000'; const AuthService = { login: async (email, password) => { try { const response = await axios.post(`${API_BASE_URL}/login`, { email, password, }); // Sprawdź, czy odpowiedź zawiera token dostępu const { sessionToken } = response.data; // Ustaw ciasteczko sesji setCookie({ name: 'session', value: sessionToken, domain: 'localhost:5000', path: '/', // secure: true, // jeśli używasz HTTPS }); // Tutaj możesz coś zrobić z danymi, np. zapisz je w lokalnym stanie aplikacji return { sessionToken }; } catch (error) { // Obsłuż błąd logowania console.error('Błąd logowania:', error); throw error; } }, // Reszta kodu bez zmian }; // AuthServices.js export const Me = async () => { try { // Wykonanie zapytania GET do endpointu /me const response = await axios.get(`${API_BASE_URL}/me`); // Zwrócenie danych otrzymanych z serwera return response.data; } catch (error) { // Obsługa błędów, np. logowanie błędu console.error('Błąd w funkcji Me:', error); // Możesz zdecydować, czy rzucić ponownie błąd, czy zwrócić domyślną wartość throw error; } }; export default AuthService; Login screen: import React, { useState } from 'react'; import { View, Text, TextInput, Button } from 'react-native'; import AuthService from '../services/AuthServices'; import { useNavigation } from '@react-navigation/native'; const LoginScreen = () => { const navigation = useNavigation(); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const handleLogin = async () => { try { const userData = await AuthService.login(username, password); navigation.navigate('Home'); } catch (error) { console.error('Błąd logowania:', error); if (error.response) { // Błąd z odpowiedzią od serwera console.error('Response data:', error.response.data); console.error('Response status:', error.response.status); } else if (error.request) { // Błąd z żądaniem do serwera console.error('Request error:', error.request); } else { // Inny rodzaj błędu console.error('Inny błąd:', error.message); } } }; return ( <View> <Text>Login Screen</Text> <TextInput placeholder="Username" value={username} onChangeText={(text) => setUsername(text)} /> <TextInput placeholder="Password" secureTextEntry value={password} onChangeText={(text) => setPassword(text)} /> <Button title="Login" onPress={handleLogin} /> </View> ); }; export default LoginScreen; Dodatkowo mam warning którego nie wiem jak mam naprawić WARNING in ./pages/HomeScreen.js:11:36 export 'default' (imported as 'CookieManager') was not found in 'react-native-cookies' (module has no exports) 9 | try { 10 | // Sprawdź, czy masz zapisane pliki cookie > 11 | const sessionCookie = await CookieManager.get('http://localhost:5000', 'session'); | ^ 12 | 13 | if (!sessionCookie) { 14 | console.error('Użytkownik nie jest zalogowany.'); Całkowicie nie potrafię tego ogarnąć, ma ktoś jakiś pomysł lub wytłumaczenie czy coś?
  13. Grzegorz

    brzozowki - Konto Steam - 110 zł

    Dzień dobry, mam na sprzedaż konto steam: https://steamcommunity.com/id/brzozowki/. Kwota 110zł Pozdrawiam
  14. Grzegorz

    Wygasający token Facebook Graph API w PHP

    aaa, cały czas rozumiałem że logowanie prawdziwe jest potrzebne
  15. Grzegorz

    Wygasający token Facebook Graph API w PHP

    Tymczasowe, ponieważ logowania nie mogę wymusić na wizytówkowej stronie - według mnie jest to bez sens @FrageN ale teraz wpadłem na inny pomysł, fakt umieszczę logowanie ale w panelu admina - myśle że to najlepsze rozwiązanie
  • Dodaj nową pozycję...
  • Dodaj nową pozycję...