带有 Amplify 的 GraphQL 为 React 应用程序提供了 401 未经授权(使用 Cognito 添加身份验证之前和之后)

Ket*_*tak 6 graphql aws-amplify

我正在尝试使用 Amplify 并尝试创建我的第一个 React 应用程序,以获取简单的 Ride 模型。

我总是在本地主机上以及托管到 S3 后收到 401 未经授权的错误。

errorType: "UnauthorizedException"
message: "You are not authorized to make this call."
Run Code Online (Sandbox Code Playgroud)

geo*_*rry -1

@SlackGadget 的解决方案基本上是正确的。

AppSync API 密钥的默认过期时间为 7 天,这意味着如果您未在 Amplify 构建的初始配置中设置此项或使用不同类型的身份验证,则您的 API 将在 7 天后过期。如果您在此时间范围内进行部署,则会生成一个新密钥,但如果不检查 AppSync,则不会出现真正的警告。

要检查,请按照下列步骤操作:

  1. 转到 AWS AppSync
  2. 单击有问题的应用程序
  3. 单击侧面导航中的“设置”
  4. 检查文件中显示的密钥aws-exports.js,如果它已过期,这将是问题所在。

解决方案:

  1. 要最初修复它,请从 Amplify 控制台重新部署您的应用程序以启动并运行它,以防止出现 401 错误
  2. 然后在本地更新 API,转到您的<project-root>/amplify/backend/api/<api-name>/parameters.json文件并添加APIKeyExpirationEpoch密钥。这需要密钥的过期时间(以秒为单位)。然后您可以部署它,新密钥将具有新的到期日期。
  3. 您还可以在 AppSync 设置中更新过期密钥

以下是用于覆盖 Amplify 参数的文档:https://docs.amplify.aws/cli-legacy/graphql-transformer/resolvers/#custom-resolvers