标签: aws-amplify-sdk-js

自定义电子邮件验证页面 AWS Cognito

我正在使用 Amazon Cognito 进行用户身份验证。用户注册后,验证电子邮件将发送到他的电子邮件地址。单击电子邮件链接后,他会在浏览器中收到提示。

Aws 验证页面

我如何自定义此页面以插入将触发移动应用程序中的深层链接的脚本,并使页面看起来更好一些?

amazon-web-services amazon-cognito aws-amplify aws-amplify-sdk-js

9
推荐指数
1
解决办法
2104
查看次数

Amazon Cognito - OpenID Connect - 无效+提供商名称/用户名+组合

我正在尝试在我的 Cognito 用户池中配置 Microsoft Azure AD B2C身份提供商。

我在前端使用https://www.npmjs.com/package/@aws-amplify/auth库。

我已经命名了新的身份提供者Microsoft。我还在我的用户池中启用了它。我将相同的 ( Microsoft) 传递给该Auth.federatedSignIn方法。

现在,当我尝试通过 Microsoft 对用户进行身份验证时,用户会从 Microsoft 方面进行身份验证,但 Cognito 会向我显示错误?error_description=Invalid+ProviderName/Username+combination.+Please+check+again+&state=XmnGedOhmT99RnTlw0LypyMmqwCRbCZr&error=invalid_request

这对我来说似乎是一个配置问题,但我无法弄清楚它是什么。

请帮忙。

amazon-web-services amazon-cognito aws-amplify-sdk-js

9
推荐指数
1
解决办法
1960
查看次数

将自定义 Apollo 客户端与 AWS AppSync 结合使用

背景

在我正在进行的一个新项目中,我们正在研究将 AppSync 用于我们的 GraphQL 服务器(使用 Amplify)。但是,由于它依赖于旧版本的 Apollo Client (2.4.6),并且 Apollo Client 在 3.0 版本中引入了重大更改,因此使用 AwsAppSyncClient 并不是最佳选择。我们也不能等待 AppSync 迁移到 Apollo Client 3.0,所以我想知道现在是否最好将自定义客户端与 Apollo Client 3.0 一起使用,并在他们的 Apollo 依赖项迁移到 3.0 后迁移到 AwsAppSyncClient。这是一个好主意吗?可以在下面找到当前的实现。然而,这带来了一些新问题。

(这是我关于 Stack Overflow 的第一个问题,所以希望这不是一次太多!)

我已经做了一些研究,但我对 GraphQL、Apollo、AppSync 和 Amplify 的主题仍然很陌生,所以我认为最好向那里的专家咨询!

问题

  • 如何将 Apollo Client 3.0 与 AppSync 最佳结合(参见下面的实现)?不使用 AwsAppSyncClient 会失去什么?
  • 使用带有 AppSync 的自定义 Apollo 客户端,是否可以在同一个查询中同时查询本地和远程数据(例如,使用 @client 标签)?
  • 有没有办法像 ApolloClient 一样使用 AwsAppSyncClient 处理本地状态管理,例如使用反应变量

关于使用 AppSync 的其他问题:

(不知道我是否应该为此创建一个单独的问题?)

  • 使用 AppSync 进行查询实际上如何设计来自客户端的查询?就我对 GraphQL 的理解,重点是结合多个 REST 调用,同时也只询问实际相关的字段。但是,使用 AppSync 和 codegen,自动生成queries.js和 …

reactjs apollo-client aws-appsync aws-amplify-sdk-js

6
推荐指数
0
解决办法
920
查看次数

AWS amplify 数据存储不会与服务器同步

因此,我试图让 AWS Amplify 的数据存储库与我正在构建的 ReactJS Web 应用程序一起使用。我手动使用 graphql 突变向 api 发送数据并从 api 发送数据,然后我尝试按照本教程设置 DataStore 。在具有索引数据库的客户端中,一切工作正常,但我无法使数据与 api 同步。我在控制台中收到以下错误:

 DataStore - Data won't be synchronized. No GraphQL endpoint configured. Did you forget `Amplify.configure(awsconfig)`?
Run Code Online (Sandbox Code Playgroud)

我仔细检查了一遍,我肯定将我的 AWS 导出包括在内:

import Amplify from "@aws-amplify/core";
import awsExports from "./aws-exports";

Amplify.configure(awsExports);
Run Code Online (Sandbox Code Playgroud)

生成的内容./aws-exports.js如下:

/* eslint-disable */
// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.

const awsmobile = {
    "aws_project_region": "us-east-2",
    "aws_appsync_graphqlEndpoint": "https://xxxxxxxxxxxxxx.appsync-api.us-east-2.amazonaws.com/graphql",
    "aws_appsync_region": "us-east-2",
    "aws_appsync_authenticationType": "API_KEY", …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services reactjs aws-amplify aws-amplify-sdk-js

6
推荐指数
1
解决办法
9264
查看次数

如何将现有的 dynamo 数据库与 AWS Amplify 和 graphql 结合使用

我们的应用程序在 dynamodb 中有现有数据库。对于我们的新 React 应用程序之一,我们想要使用 AWS Amplify,并且我们正在尝试使用现有的表。

我创建了一个框架项目,然后转到后端AWS AppSync console -> Data Sources并将现有表映射到它。我将该表定义添加到了我的 React 应用程序中的 schema.graphql 中。当我进行放大推送时,我看到它在 dynamodb 中创建一个新表,而不是指向现有数据库。

我还尝试在 AppSync Console 中映射其中一个表,并amplify pull从本地项目进行映射,假设这将在我的本地 schema.graphql 中添加表的定义,但这也没有发生。它没有从后端应用程序同步控制台获取新映射的数据源的详细信息。

我现有的数据库有大量数据,并且也与其他应用程序共享。我不想创建新表。

您能建议如何实现这一目标吗?

此外,我们还拥有现有的 lamdba 函数,我们也希望将其利用到这个新的 Amplify 项目中。您也可以为此提出建议吗?

任何帮助深表感谢!

graphql aws-appsync aws-amplify aws-amplify-sdk-js

6
推荐指数
1
解决办法
3586
查看次数

AWS Amplify - 是否有 API 可以验证使用忘记密码发送的代码并在验证后更改密码?

我使用 cognito 用户池进行用户管理,并使用忘记密码的流程将确认代码发送给用户。出于 UI 目的,我需要验证调用 API ForgotPassword 时发送的代码,但尚未发送新密码。我需要在“忘记密码”和“确认忘记密码”之间有一个中间步骤。

下面的函数是发送代码的函数:

Auth.forgotPassword(username)
Run Code Online (Sandbox Code Playgroud)

此功能正在使用发送的代码重置密码(如果代码无效,则会通知我)

Auth.forgotPasswordSubmit(username, code, new_password)
Run Code Online (Sandbox Code Playgroud)

是否可以仅验证使用现有 API 发送的代码?

这里有一个包含信息的链接: https ://docs.amplify.aws/lib/auth/manageusers/q/platform/js#forgot-password

javascript amplifyjs aws-amplify aws-amplify-sdk-js

6
推荐指数
0
解决办法
544
查看次数

无法将 aws-amplify 与 NextJS 13.4 api 路由一起使用

我已成功在以前版本的 NextJS 中使用页面/api 路由连接到 AWS API Gateway。我正在尝试使用新的应用程序路由器在 app/api/route 中执行相同的操作。但我无法让aws-amplify图书馆工作,即

const {Auth: ssrAuth} = withSSRContext({ req: request });  //works
const user = await ssrAuth.currentAuthenticatedUser();     //fails
Run Code Online (Sandbox Code Playgroud)

这与页面路由器配合得很好,我能够获取用户令牌以将授权者附加到 API 网关请求。

知道为什么吗?请求就在那里,我可以看到带有用户令牌的 cookie。我究竟做错了什么?

非常感谢任何反馈/提示

api-gateway aws-amplify aws-amplify-sdk-js nextjs-dynamic-routing next.js13

6
推荐指数
1
解决办法
2562
查看次数

Aws Cognito 注销和会话清除不起作用

我已将Aws Congnito联合身份验证与 React Native 中的提供程序集成,运行良好。

问题是:

当我要注销并再次登录时,它不会再次询问我的登录帐户帐户详细信息,它直接使用旧帐户并登录。

我在注销会话清除时尝试了这些代码行:

 Auth.signOut();

cognitoCredentials.clearCachedId();
cognitoCredentials = new AWS.CognitoIdentityCredentials(cognitoParams);
AWS.config.credentials = cognitoCredentials
Run Code Online (Sandbox Code Playgroud)

然后我使用 ammplity Hub 监听,事件触发良好

 Hub.listen("auth", ({ payload: { event, data } }) => {
    switch (event) {
      case "signIn":
      case 'cognitoHostedUI':
        break;
       case "signOut":
          console.log('Yes Logout');
         //clear my local 
          break;
        case 'signIn_failure':
        case 'cognitoHostedUI_failure':
          console.log('Sign in failure', data);
          break;
        case "customOAuthState":
  });
Run Code Online (Sandbox Code Playgroud)

我注意到了这一点,但我无法解决我的问题 How to Force select account while Login with Google

我想知道是否遗漏了什么,请向我提供解决方案。

amazon-web-services amazon-cognito react-native aws-amplify aws-amplify-sdk-js

5
推荐指数
0
解决办法
1874
查看次数

如何防止更新 AWS Amplify GraphQL API 的ownerField?

我使用 AWS 的 Amplify 创建了一个 GraphQL API。在架构中,我有一个评论模型,如下所示:

type Comment
  @auth(rules: [{ allow: owner }, { allow: private, operations: [read] }, { allow: public, operations: [read] }])
  @model
  @key(name: "byAuthor", fields: ["authorID"])
  @key(name: "byPost", fields: ["postID"]) {
  content: String!
  createdAt: AWSDateTime!
  id: ID!
  owner: String
  postID: ID!
  updatedAt: AWSDateTime!
}
Run Code Online (Sandbox Code Playgroud)

这为所有者提供了创建、读取、更新和删除的权限,并将未经身份验证/经过身份验证的非所有者用户限制为只读。这按预期工作;然而,所有者可以更新ownerField 的值,本质上是将评论归因于另一个用户......这是一个禁忌。为了防止这种情况,我尝试使用字段级权限(见下文);然而,这似乎并没有阻止更新。

...
owner: String @auth(rules: [{ allow: owner, operations: [ create ]}])
...
Run Code Online (Sandbox Code Playgroud)

我有什么遗漏的吗?非常感谢任何帮助——谢谢!

amazon-web-services amplifyjs graphql aws-amplify aws-amplify-sdk-js

2
推荐指数
1
解决办法
1327
查看次数

在 React Native 项目中向 Amplify API 添加模拟时出错

我目前正在开发一个 React Native 项目,其中使用 AWS Amplify 作为我的后端 API。我尝试向 Amplify API 添加模拟以进行测试,但使用此命令时遇到错误:

amplify mock api
Run Code Online (Sandbox Code Playgroud)

导致此错误消息:

Edit your schema at 
/***/***/***/***/amplify/backend/api/***/schema.graphql or place .graphql files in a directory at /***/***/***/***/amplify/backend/api/***/schema
Failed to start API Mocking. Running cleanup tasks.
Reason: Error: Parse error on resolvers/Query.syncCouriers.req.vtl:11:50
Parse error on line 12:
...tx.stash.authFilter.or ) #if( $fil
-----------------------^
Expecting 'ID', 'CONTENT', got '||' 
Run Code Online (Sandbox Code Playgroud)

我不确定到底是什么导致了这个错误以及如何解决它。我已经检查了我的架构文件并确保其格式正确。我还尝试在指定目录中创建单独的 .graphql 文件,但错误仍然存​​在。

包.json:

{
  "name": "ubereatsuser",
  "version": "1.0.0",
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo …
Run Code Online (Sandbox Code Playgroud)

amplifyjs graphql react-native aws-amplify aws-amplify-sdk-js

2
推荐指数
1
解决办法
428
查看次数