如何在反应原生中处理 cookie



我有一个运行节点js和护照的Web应用程序.js并且身份验证流程运行良好。我正在尝试开发一个反应原生并制作相同的身份验证流程(使用 passport.js(。

我更改了护照代码以重定向回 react-native 应用程序(带有链接(,它起作用了。

所以流程是:

  1. 使用登录网址打开浏览器(/auth/google(
  2. 用户已登录
  3. 重定向回本机应用
  4. 发送请求以验证用户是否已登录 - 但用户未登录,我认为是因为 cookie 未发送到服务器

我还尝试向获取凭据添加"同源"或"包含",但用户仍未登录。

我使用的一些代码:

Linking.openURL("http://<my ip>:3000/auth/google"); //for log in
app.get('/auth/google/callback', //handle the log in with passport js
    passport.authenticate('google', {
        failureRedirect: '/login'
    }), function(req, res) {
        res.redirect('MyApp://login); // redirect back to native app
    });
fetch("http://<my ip>:3000/api1", {credentials: /*"same-origin"*/"include"}) //get 401 -> user is not logged in

我错过了什么吗?

如何在反应原生中处理 cookie?像在网络上一样吗?重定向后,Cookie 应如何从浏览器传递到本机应用程序?

React Native 不是浏览器环境。它不会像浏览器那样自动处理 Cookie。

您必须使用一些 cookie 感知请求库,例如超级代理。

示例用法(来自超级代理文档(:

const agent = request.agent();
agent
  .post('/login')
  .then(() => {
    return agent.get('/cookied-page');
  });

然后,来自agent的所有请求将自动处理cookie(共享相同的cookiejar(。

最新更新