【问题标题】:Problems using auth0 Quick Start Guide for cordova使用适用于科尔多瓦的 auth0 快速入门指南的问题
【发布时间】:2017-10-10 11:00:09
【问题描述】:

因此,在我的科尔多瓦应用程序中集成 auth0 时遇到问题后,我决定运行官方提供的 sample app。但是在按照提供的说明进行操作后,我仍然无法使其工作。 我得到的错误是

Error in Success callbackId: SafariViewController1859440610 : TypeError: Object.assign is not a function

我在谷歌上找不到任何类似的问题,也不知道如何跟踪它。任何线索和帮助将不胜感激。 我的插件/fetch.json 看起来像这样

{
"cordova-plugin-inappbrowser": {
    "source": {
        "type": "registry",
        "id": "cordova-plugin-inappbrowser@~1.3.0"
    },
    "is_top_level": true,
    "variables": {}
},
"cordova-plugin-whitelist": {
    "source": {
        "type": "registry",
        "id": "cordova-plugin-whitelist@~1.2.1"
    },
    "is_top_level": true,
    "variables": {}
},
"cordova-plugin-customurlscheme": {
    "source": {
        "type": "registry",
        "id": "cordova-plugin-customurlscheme@^4.3.0"
    },
    "is_top_level": true,
    "variables": {
        "URL_SCHEME": "com.auth0.cordova.example",
        "ANDROID_SCHEME": "com.auth0.cordova.example",
        "ANDROID_HOST": "tsm-test.eu.auth0.com",
        "ANDROID_PATHPREFIX": "/cordova/com.auth0.cordova.example/callback"
    }
},
"cordova-plugin-safariviewcontroller": {
    "source": {
        "type": "registry",
        "id": "cordova-plugin-safariviewcontroller"
    },
    "is_top_level": true,
    "variables": {}
}

}

我的 config.xml 是:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.auth0.cordova.example" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:gap="http://phonegap.com/ns/1.0">
        <name>Auth0 Example</name>
        <description>
            Login sample application that responds to the deviceready event and authenticates using Auth0
        </description>
        <author email="support@auth0.com" href="http://auth0.com">
            Auth0 Team
        </author>
        <content src="index.html" />
        <preference name="DisallowOverscroll" value="true" />
        <preference name="android-minSdkVersion" value="16" />
        <platform name="android">
        </platform>
        <platform name="ios">
        </platform>
        <access origin="*" />
        <platform name="android">
            <allow-intent href="market:*" />
        </platform>
        <platform name="ios">
            <allow-intent href="itms:*" />
            <allow-intent href="itms-apps:*" />
        </platform>
        <preference name="AndroidLaunchMode" value="singleTask" />
        <engine name="android" spec="^6.2.3" />
        <engine name="ios" spec="~4.4.0" />
        <plugin name="cordova-plugin-inappbrowser" spec="~1.7.1" />
        <plugin name="cordova-plugin-whitelist" spec="~1.3.2" />
        <plugin name="cordova-plugin-customurlscheme" spec="^4.3.0">
            <variable name="URL_SCHEME" value="com.auth0.cordova.example" />
            <variable name="ANDROID_SCHEME" value="com.auth0.cordova.example" />
            <variable name="ANDROID_HOST" value="tsm-test.eu.auth0.com" />
            <variable name="ANDROID_PATHPREFIX" value="/cordova/com.auth0.cordova.example/callback" />
        </plugin>
        <plugin name="cordova-plugin-safariviewcontroller" spec="^1.4.7" />
    </widget>

客户端的域是tsm-test.eu.auth0.com

允许的回调 URL 设置为 并且允许的来源 (CORS) 是 file://*

【问题讨论】:

    标签: cordova auth0


    【解决方案1】:

    我在 android 中实现 Auth0 时遇到了类似的错误,如本文所述 链接https://github.com/pburtchaell/react-notification/issues/65,我在“webpack.config.js”文件的入口点添加了“babel-polyfill”。

    entry: ['babel-polyfill','./src/index.js'],
    

    现在 Auth0 在我的 Android 应用中运行良好。

    【讨论】:

      【解决方案2】:

      听起来您可能没有安装必要的 Cordova 插件。取自readme with the quickstart sample

      安装 Cordova 插件

      需要几个 Cordova 插件才能与 @auth0/cordova 一起使用。使用以下命令安装safariviewcontrollercustomurlscheme

      cordova插件添加cordova-plugin-safariviewcontroller

      cordova 插件添加 cordova-plugin-customurlscheme --variable URL_SCHEME={YOUR_PACKAGE_ID} --变量 ANDROID_SCHEME={YOUR_PACKAGE_ID} --变量 ANDROID_HOST={YOUR_AUTH0_DOMAIN} --变量 ANDROID_PATHPREFIX=/cordova/{YOUR_PACKAGE_ID}/callback

      安装 cordova-plugin-customurlscheme 时使用的变量与在 Auth0 仪表板中设置 回调 URL 时使用的变量相同。

      换句话说,只需在您最喜欢的命令提示符/终端中运行上面的这两个命令。第二条指令看起来有点压倒性 - 但如果您使用的是默认包 ID(快速入门附带) - 然后只需使用:

      cordova 插件添加 cordova-plugin-customurlscheme --variable URL_SCHEME=com.auth0.cordova.example --variable ANDROID_SCHEME=com.auth0.cordova.example --variable ANDROID_HOST={YOUR_TENANT}.auth0.com --变量 ANDROID_PATHPREFIX=/cordova/com.auth0.cordova.example/callback

      并将 {YOUR_TENANT} 替换为您自己的 Auth0 租户。

      顺便说一句,您的 Auth0 仪表板中允许的回调 URL 也应如下所示(再次假设您使用的是默认包标识符):

      com.auth0.cordova.example://{YOUR_TENANT}.auth0.com/cordova/com.auth0.cordova.example/callback

      当然,如果这不能解决您的问题,请将 cmets 留在下方,让我知道。祝你好运。

      【讨论】:

      • 嗨@arcseldon 感谢您的回复。我已经按照说明安装了这两个插件。我将编辑问题以包括我的 show config.xml 具有必需的参数。我也不知道 safariviewcontroller 插件与 android 有什么关系。所以我删除了再次构建的插件并尝试在我的安卓手机上运行,​​但这也不起作用。
      • 尝试使用iOS模拟器只是为了看看它是否有效。你在 Mac 上吗?我今天从新下载的版本中对此进行了测试,它第一次运行......对不起,如果这听起来没有帮助,但只是让你放心,样本可以工作。但是..我尝试了 iOS 模拟器。
      • 也许还可以尝试从您的模拟器/设备上卸载应用程序,核对您的 ios/android 平台,删除 node_modules 并重新安装、构建和生成平台。要知道这听起来像是一个非常糟糕的建议,但有时它确实有效。
      • 我在虚拟机中使用 linux。尝试使用不同的 PC 和 Windows。它没有用。
      • 但我在 Mac 上构建了相同的包,并在 iPhone 上运行了该应用程序并正常工作。
      猜你喜欢
      • 1970-01-01
      • 2016-10-02
      • 2014-12-29
      • 2017-01-27
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      相关资源
      最近更新 更多