ionic-framework - 打开应用内浏览器登录,获取cookie,在应用内使用cookie
问题描述
我有一个 Capacitor Ionic React 应用程序(PWA/iOS/Android),我一直在使用http 插件登录到 Drupal 9 后端。
最近,我通过 Drupal 的OpenID Connect模块为 Drupal 9 添加了“使用 Apple 登录”和“使用 Google 登录”支持。
这是登录流程在 Drupal 中的工作方式:
- 转到 Drupal 登录页面。
- 点击“使用 Google 登录”。
- 使用您的 Google 帐户登录。
- 被重定向回 Drupal。
- Drupal 为登录的 Google 帐户提供会话 cookie。
我想在 Ionic/Capacitor 中使用相同的流程。
因此,我添加了Capacitor 浏览器插件,并使用该插件创建了一个进入我的登录页面的应用内浏览器。
现在,在我的应用程序中,我可以使用应用程序内浏览器通过 Google 和 Apple 登录到我的 Drupal 站点。但是,会话 cookie 位于应用内浏览器中,当我关闭应用内浏览器时,我的 Capacitor 应用无法访问应用内浏览器会话 cookie。
有没有办法从启动应用内浏览器的本机应用程序访问应用内浏览器 cookie?
电容器论坛中的这篇帖子表明这可能是不可能的,但我想确认:有没有办法使用应用内浏览器登录网站,获取会话 cookie,然后使用该会话 cookie电容器/离子应用程序?
解决方案
您试图实现的目标可能行不通。以 iOS 为例,Capacitor Browser 插件SFSafariViewController
在后台使用。SFSafariViewController
本质上是一个 Safari 进程,在您的应用程序之外运行。因此,您的应用程序将无法访问 使用的 cookie SFSafariViewController
,就像您的应用程序无法访问 Safari 中的 cookie 一样。
推荐阅读
- ruby - 最大回文乘积问题的递归堆栈级别太深(Project Euler)
- asp.net-identity - 将身份用户对象传递给 AuthorizationFilterAttribute
- react-native - React Native Navigation v2 增加 topBar 高度
- php - 在laravel中添加两个整数
- regex - 如何使用 ruby 匹配字符串?
- scala - 将 Spark 中的行与现有列一起展平
- javascript - 如何有效地从具有多个页面的巨大 api 中提取数据
- flutter - 如何在飞镖中访问子类的变量
- pandas - 将随机日期时间添加到时间戳
- visual-studio-code - 有没有标准的方式来发布 VS Code 扩展中的预览功能?