首页 > 解决方案 > Postman API 调用效果很好 - 但来自 Axios (React Native) 的相同 API 调用返回网络错误

问题描述

我正在尝试在 React Native 中进行一些基于令牌的基本身份验证。

我有一个 API 端点,当我通过 Postman 提交 POST 请求时,它会向我发回一个令牌,没有问题。

但是,当我在我的应用程序中运行类似的 POST 请求时,它会返回网络错误。

这是我用来在我的应用程序中处理身份验证的代码:

import React, { useState } from 'react';
import { AsyncStorage } from 'react-native';
import * as SecureStore from 'expo-secure-store';
import axios from 'axios';

axios.defaults.baseURL = 'https://phplaravel-650853-2123089.cloudwaysapps.com';

export const AuthContext = React.createContext({});

export const AuthProvider = ({children}) => {
   const [user, setUser] = useState(null);
   const [error, setError] = useState(null);

return (
   <AuthContext.Provider
     value={{
       user,
       setUser,
       error,
       login: (email, password) => {
          axios.post('/api/auth/login', {
             email,
             password,
             device_name: 'mobile',
       })
       .then(response => {
          const userResponse = {
             email: response.data.email,
             token: response.data.token
           }
           setUser(userResponse);
           setError(null);
           SecureStore.setItemAsync('user', JSON.stringify(userResponse));
        })
        .catch(error => {
           const key = Object.keys(error.response.data.errors)[0];
           setError(error.response.data.errors[key][0]);
           console.log(error);
        }) 
      },
      logout: () => {
         setUser(null);
         SecureStore.deleteItemAsync('user');
      }
    }}>
    {children}
    </AuthContext.Provider>
  );
}

还应该注意的是,这在以前确实在某个时候起作用——我无法弄清楚从那时起真正发生了什么变化。

有什么想法我可能会错过吗?

标签: react-nativeapiauthenticationaxios

解决方案


推荐阅读