使用 cordova 的 auth0 快速入门指南的问题

Problems using auth0 Quick Start Guide for cordova

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

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

我找不到 google 上报告的任何类似问题,也不知道如何跟踪它。任何线索和帮助将不胜感激。 我的 plugiins/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 插件。摘自 readme with the quickstart sample:

安装 Cordova 插件

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

cordova plugin add cordova-plugin-safariviewcontroller

cordova plugin add cordova-plugin-customurlscheme --variable URL_SCHEME={YOUR_PACKAGE_ID} --variable ANDROID_SCHEME={YOUR_PACKAGE_ID} --variable ANDROID_HOST={YOUR_AUTH0_DOMAIN} --variable ANDROID_PATHPREFIX=/cordova/{YOUR_PACKAGE_ID}/callback

安装 cordova-plugin-customurlscheme 时使用的变量与在您的 Auth0 控制面板中用于设置 回调 URL 的变量相同。

换句话说,只需 运行 在您最喜欢的命令提示符/终端中执行上述两个命令。第二条指令看起来有点让人不知所措——但如果你使用的是默认包 ID(快速入门附带的)——那么只需使用:

cordova plugin add cordova-plugin-customurlscheme --variable URL_SCHEME=com.auth0.cordova.example --variable ANDROID_SCHEME=com.auth0.cordova.example --variable ANDROID_HOST={YOUR_TENANT}.auth0.com --variable 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

当然,如果这不能解决您的问题,请在下方留言告诉我。祝你好运。

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

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

现在 Auth0 在我的 android 应用程序中工作正常。