【问题标题】:Amplify Error: auth headless init is missing the following inputParams facebookAppIdUserPool, facebookAppSecretUserPool放大错误:auth headless init 缺少以下 inputParams facebookAppIdUserPool、facebookAppSecretUserPool
【发布时间】:2019-11-01 02:29:59
【问题描述】:

生日,

我有一个有效的 Amplify 项目。好吧,在我运行 amplify add auth 并将更改推送到 master 之前,一切都很好。我按照这里的说明https://dev.to/dabit3/the-complete-guide-to-user-authentication-with-the-amplify-framework-2inh

现在我收到以下错误,我的主人是红色的:(

在放大文档中找不到任何有用的信息。我确实尝试从这个https://github.com/aws-amplify/amplify-cli/tree/master/packages/amplify-cli/sample-headless-scripts 运行headless_init_env_auth.sh 脚本,但它没有帮助。

这个错误似乎没有记录在任何地方。

2019-06-18T11:16:53.459Z [INFO]: Error: auth headless init is missing the following inputParams facebookAppIdUserPool, facebookAppSecretUserPool, googleAppIdUserPool, googleAppSecretUserPool
                                 at updateConfigOnEnvInit (/root/.nvm/versions/node/v8.12.0/lib/node_modules/@aws-amplify/cli/node_modules/amplify-category-auth/provider-utils/awscloudformation/index.js:287:15)
                                 at /root/.nvm/versions/node/v8.12.0/lib/node_modules/@aws-amplify/cli/node_modules/amplify-category-auth/index.js:201:28
                                 at /root/.nvm/versions/node/v8.12.0/lib/node_modules/@aws-amplify/cli/node_modules/promise-sequential/index.js:16:18
                                 at <anonymous>
                                 at process._tickDomainCallback (internal/process/next_tick.js:229:7)
2019-06-18T11:16:53.466Z [ERROR]: !!! Build failed
2019-06-18T11:16:53.466Z [ERROR]: !!! Non-Zero Exit Code detected```

【问题讨论】:

  • 你找到解决办法了吗?

标签: authentication aws-amplify


【解决方案1】:

在 AUTHCONFIG 中定义 facebookAppIdUserPool、facebookAppSecretUserPool、googleAppIdUserPool、googleAppSecretUserPool

#!/bin/bash
set -e
IFS='|'

AUTHCONFIG="{\
\"facebookAppId\":\"fbid1\",\
\"googleClientId\":\"goog\",\
\"facebookAppIdUserPool\":\"facebookAppId\",\
\"facebookAppSecretUserPool\":\"facebookAppSecret\",\
\"googleAppIdUserPool\":\"facebookAppSecret\",\
\"googleAppSecretUserPool\":\"googleAppSecret\"\
}"
AWSCLOUDFORMATIONCONFIG="{\
\"configLevel\":\"project\",\
\"useProfile\":true,\
\"profileName\":\"default\"\
}"

AMPLIFY="{\
\"envName\":\"dev8\"\
}"
PROVIDERS="{\
\"awscloudformation\":$AWSCLOUDFORMATIONCONFIG\
}"
CATEGORIES="{\
\"auth\":$AUTHCONFIG\
}"

amplify init \
--amplify $AMPLIFY \
--providers $PROVIDERS \
--categories $CATEGORIES \
--yes

或者可以使用 Amplify-CLI 命令

amplify init \
--amplify "{\"envName\":\"dev\"}" \
--categories "{\"auth\":{\"googleAppIdUserPool\":\"googleAppId\",\"googleAppSecretUserPool\":\"googleAppSecret\"}}" \
--yes

【讨论】:

【解决方案2】:

对我来说一个简单的解决方法是从放大更新环境变量。

AMPLIFY_AMAZON_CLIENT_ID

AMPLIFY_AMAZON_CLIENT_SECRET

AMPLIFY_FACEBOOK_CLIENT_ID

AMPLIFY_FACEBOOK_CLIENT_SECRET

AMPLIFY_GOOGLE_CLIENT_ID

AMPLIFY_GOOGLE_CLIENT_SECRET

【讨论】:

    【解决方案3】:

    我的解决方法如下:

    1. 通过App settings > Environment variables 为身份验证资源创建环境变量并添加这些环境变量值:AMPLIFY_FACEBOOK_CLIENT_IDAMPLIFY_FACEBOOK_CLIENT_SECRETAMPLIFY_GOOGLE_CLIENT_IDAMPLIFY_GOOGLE_CLIENT_SECRETAMPLIFY_AMAZON_CLIENT_IDAMPLIFY_AMAZON_CLIENT_SECRET

    2. 在根文件夹 amplify-auth-app/myamplifypush.sh 中创建您自己的 amplifypush.sh(例如在 React 中创建的项目中的amplify-auth-app)

    3. 将您的身份验证配置添加到 bash 脚本中:

    #!/usr/bin/env bash
    set -e
    IFS='|'
    
    help_output () {
        echo "usage: amplify-push <--environment|-e <name>> <--simple|-s>"
        echo "  --environment  The name of the Amplify environment to use"
        echo "  --simple  Optional simple flag auto-includes stack info from env cache"
        exit 1
    }
    
    init_env () {
        ENV=$1
        AMPLIFY=$2
        PROVIDERS=$3
        CODEGEN=$4
        AWSCONFIG=$5
        CATEGORIES=$6
    
        echo "# Start initializing Amplify environment: ${ENV}"
        if [[ -z ${STACKINFO} ]];
        then
            echo "# Initializing new Amplify environment: ${ENV} (amplify init)"
            [[ -z ${CATEGORIES} ]] && amplify init --amplify ${AMPLIFY} --providers ${PROVIDERS} --codegen ${CODEGEN} --yes --minify || amplify init --amplify ${AMPLIFY} --providers ${PROVIDERS} --codegen ${CODEGEN} --categories ${CATEGORIES} --yes --minify
            echo "# Environment ${ENV} details:"
            amplify env get --name ${ENV}
        else
            echo "STACKINFO="${STACKINFO}
            echo "# Importing Amplify environment: ${ENV} (amplify env import)"
            amplify env import --name ${ENV} --config "${STACKINFO}" --awsInfo ${AWSCONFIG} --yes;
            echo "# Initializing existing Amplify environment: ${ENV} (amplify init)"
            [[ -z ${CATEGORIES} ]] && amplify init --amplify ${AMPLIFY} --providers ${PROVIDERS} --codegen ${CODEGEN} --yes --minify || amplify init --amplify ${AMPLIFY} --providers ${PROVIDERS} --codegen ${CODEGEN} --categories ${CATEGORIES} --yes --minify
            echo "# Environment ${ENV} details:"
            amplify env get --name ${ENV}
        fi
        echo "# Done initializing Amplify environment: ${ENV}"
    }
    
    ENV=""
    IS_SIMPLE=false
    POSITIONAL=()
    while [[ $# -gt 0 ]]
        do
        key="$1"
        case ${key} in
            -e|--environment)
            ENV=$2
            shift
            ;;
            -r|--region)
            REGION=$2
            shift
            ;;
            -s|--simple)
            IS_SIMPLE=true
            shift
            ;;
            *)
            POSITIONAL+=("$1")
            shift
            ;;
        esac
    done
    set -- "${POSITIONAL[@]}"
    
    # if no provided environment name, use default env variable, then user override
    if [[ ${ENV} = "" ]];
    then
        ENV=${AWS_BRANCH}
    fi
    
    if [[ ${USER_BRANCH} != "" ]];
    then
        ENV=${USER_BRANCH}
    fi
    
    # strip slashes, limit to 10 chars
    ENV=$(echo ${ENV} | sed 's;\\;;g' | sed 's;\/;;g' | cut -c -10)
    
    # Check valid environment name
    if [[ -z ${ENV} || "${ENV}" =~ [^a-zA-Z0-9\-]+ ]] ; then help_output ; fi
    
    AWSCONFIG="{\
    \"configLevel\":\"project\",\
    \"useProfile\":true,\
    \"profileName\":\"default\",\
    \"AmplifyAppId\":\"${AWS_APP_ID}\"\
    }"
    AMPLIFY="{\
    \"envName\":\"${ENV}\",\
    \"appId\":\"${AWS_APP_ID}\"\
    }"
    PROVIDERS="{\
    \"awscloudformation\":${AWSCONFIG}\
    }"
    CODEGEN="{\
    \"generateCode\":false,\
    \"generateDocs\":false\
    }"
    CATEGORIES=""
    if [[ -z ${AMPLIFY_FACEBOOK_CLIENT_ID} && -z ${AMPLIFY_GOOGLE_CLIENT_ID} && -z ${AMPLIFY_AMAZON_CLIENT_ID} ]]; then
        CATEGORIES=""
    else
        AUTHCONFIG="{\
        \"facebookAppIdUserPool\":\"${AMPLIFY_FACEBOOK_CLIENT_ID}\",\
        \"facebookAppSecretUserPool\":\"${AMPLIFY_FACEBOOK_CLIENT_SECRET}\",\
        \"googleAppIdUserPool\":\"${AMPLIFY_GOOGLE_CLIENT_ID}\",\
        \"googleAppSecretUserPool\":\"${AMPLIFY_GOOGLE_CLIENT_SECRET}\",\
        \"amazonAppIdUserPool\":\"${AMPLIFY_AMAZON_CLIENT_ID}\",\
        \"amazonAppSecretUserPool\":\"${AMPLIFY_AMAZON_CLIENT_SECRET}\"\
        }"
        CATEGORIES="{\
        \"auth\":$AUTHCONFIG\
        }"
    fi
    # Handle old or new config file based on simple flag
    if [[ ${IS_SIMPLE} ]];
    then
        echo "# Getting Amplify CLI Cloud-Formation stack info from environment cache"
        export STACKINFO="$(envCache --get stackInfo)"
        init_env ${ENV} ${AMPLIFY} ${PROVIDERS} ${CODEGEN} ${AWSCONFIG} ${CATEGORIES}
        echo "# Store Amplify CLI Cloud-Formation stack info in environment cache"
        STACKINFO="$(amplify env get --json --name ${ENV})"
        envCache --set stackInfo ${STACKINFO}
        echo "STACKINFO="${STACKINFO}
    else
        # old config file, above steps performed outside of this script
        init_env ${ENV} ${AMPLIFY} ${PROVIDERS} ${CODEGEN} ${AWSCONFIG} ${CATEGORIES}
    fi
    
    1. 在放大控制台中编辑构建设置,使其看起来有点像这样:
    version: 0.1
    backend:
      phases:
        build:
          commands:
            - '# Execute Amplify CLI with the helper script'
            - chmod u+x ./myamplifypush.sh
            - ./myamplifypush.sh
    frontend:
      phases:
        preBuild:
          commands:
            - npm ci
        build:
          commands:
            - npm run build
      artifacts:
        baseDirectory: build
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
    
    1. 并重新部署

    【讨论】:

    • 非常感谢!经过这么多小时试图找到解决方案,这为我做到了。
    猜你喜欢
    • 2021-04-15
    • 2016-10-20
    • 1970-01-01
    • 2015-12-04
    • 2021-07-14
    • 2012-02-17
    • 2020-08-09
    • 2020-12-28
    • 2020-05-23
    相关资源
    最近更新 更多