0

我是 ionic 和 cordova 插件的新手,我正在尝试在我的 ionic 应用程序中使用 cordova-plugin-sfauthenticationsession 来实现 cookie 的共享。

这是我基于此链接中提供的文档的代码:

SFAuthSession.start("myScheme://","https://www.facebook.com/",
        function(data){
                console.log(data);
        },function(error){
                console.log(error);
        }
);

问题是每当我尝试构建我的应用程序时,终端都会显示一个错误,即找不到 SFAuthSession。我不知道我需要导入什么(如果有的话),因为它不包含在文档中。希望有人可以帮助我。

PS 我还按照此文档尝试了 safari 视图控制器,它工作正常,因为它提供了要导入的内容。

4

1 回答 1

1

这是一个常见的错误。文档告诉您如何安装该特定插件,但他们没有告诉您还需要更新模块文件以包含它。

看看这个页面:

它解释了您需要在 a 中导入插件@NgModule并将其添加到 Providers 列表中。对于 Angular,导入路径应以/ngx. Angular 的变更检测是自动处理的。

为此,您需要:

// app.module.ts
import { Camera } from '@ionic-native/camera/ngx';

...

@NgModule({
  ...

  providers: [
    ...
    Camera
    ...
  ]
  ...
})
export class AppModule { }

因此,只需使用该技术导入您的 Ionic Native 模块,它就可以工作了。

当没有 Ionic Native 包装器时

但是,根据您在下面的评论,现在很明显,这个 Cordova 插件没有 Ionic Native 包装器。

这意味着您必须:

  • 在没有 Ionic Native 的情况下访问它
  • 或者编写你自己的 Ionic Native 包装器

似乎这篇关于 Medium 的文章对此有很好的介绍:

为 Ionic Native 构建你的第一个 Cordova 插件 – Sangkhim Khun – Medium

你已经超越了我在这里的个人经历,但我正试图和你一起弄清楚。

本教程的第三部分有一个有趣的片段,用于直接访问 Cordova 插件:

declare var cordova: any;
var success = function(result) {
  alert(JSON.stringify(result, undefined, 2));
}
var failure = function(result) {
  alert(JSON.stringify(result, undefined, 2));
}
cordova.plugins.HelloWorld.coolMethod({
  _sMessage: "Hello World"
}, success, failure);

您必须比较您的 Cordova 插件的文档以自行调整以使其正常工作。

或者,如果您继续阅读该教程,它将解释如何创建一个 Ionic Native 包装器,您甚至可以将其贡献回项目,以便每个人都可以使用此功能。

于 2019-07-08T03:56:42.480 回答