繁体   English   中英

如何在本机中处理cookie?

[英]How cookies are handled in react-native?

我有一个使用节点js和passport.js运行的Web应用程序,并且身份验证流程运行良好。 我正在尝试开发一个本机反应,并进行相同的身份验证流程(使用passport.js)。

我更改了护照代码,以重定向回react-native应用程序(具有Linking),并且它可以正常工作。

因此流程为:

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

我还尝试将提取凭证添加为“ same-origin”或“ include”,但用户仍未登录。

我使用的一些代码:

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的请求库,例如superagent

用法示例(来自superagent文档 ):

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

然后,来自agent所有请求将自动处理cookie(共享同一个cookie jar)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM