标签: aws-amplify

AWS Amplify,如何检查用户是否已登录?

我一直在使用aws-amplify离子库,并想知道如何检查用户是否登录?我来自firebase背景所以这是完全不同的.这样我就可以根据用户的登录状态授予对某些页面的访问权限.在我的auth提供者中我导入Amplify {Auth}.我可以看到可以获得几个数据,但我不知道该使用什么.有currentUserPoolUser,getCurrentUser(),getSyncedUser(),currentAuthenticatedUser,currentSession,getCurrentUser(),userSession,currentUserCredentials,currentCredentialscurrentUserInfo.我似乎无法找到任何这方面的任何文件.我阅读和观看的所有内容都会被覆盖,直到用户登录...这一切都应该在客户端完成吗?谢谢.

amazon-web-services ionic-framework aws-sdk aws-amplify

8
推荐指数
2
解决办法
6220
查看次数

用于GraphQL的AWS Amplify和Apollo Client之间的区别?

我同意Apollo Client很难设置,因为它有很多样板(尽管在阅读文档之后变得很简单)和诸如AWS Amplify,URQL,Apollo Boost和Micro GraphQL React之类的东西使得在客户端上使用GraphQL变得容易.

我目前正在使用AWS AppSync并希望在AWS Amplify和Apollo Client之间做出选择,而我正考虑进入所有AWS.

那么AWS Amplify和Apollo Client有什么区别?

reactjs graphql apollo-client aws-appsync aws-amplify

8
推荐指数
1
解决办法
1972
查看次数

AWS GraphQL:变量'input'强制为NonNull类型'Input!'强制Null值.

我正在使用ReactJS并aws-amplify执行graphql操作.

码:

import {
   API,
   graphqlOperation
} from 'aws-amplify';

import { UpdateInput } from './mutations.js';

// Call mutation
const input = { /* some values */ };
API.graphql(graphqlOperation(UpdateInput, input)).then(...);
Run Code Online (Sandbox Code Playgroud)

GraphQL变异定义:

export const UpdateInput = `mutation UpdateInput($input: Input!) {
   updateInput(input: $input) {
      id, 
      name
   }   
}`
Run Code Online (Sandbox Code Playgroud)

GraphQL架构:

input Input {
   id: ID!
   name: String
}

type Mutation {
   updateInput(input: Input!): String
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误:

[Log]变量'input'强制NonNull类型'Input!'的Null值

使用AWS控制台我的突变工作并且input是NonNull(使用调试器)

是什么导致错误?

reactjs graphql aws-appsync aws-amplify

8
推荐指数
1
解决办法
3612
查看次数

如何在 AWS amplify-js 中处理刷新令牌服务

在我的反应项目中,我使用 AWS Cognito 用户池进行用户管理,对于用户身份验证,我使用 AWS Cognito idToken。90 分钟后会话将过期,然后我需要使用新的 idToken 刷新。如何使用 amplify-js 在 AWS Cognito 中处理刷新令牌服务。我试过Auth.currentSession()我会每 1 小时调用一次,但它对我不起作用。

amazon-web-services amazon-cognito aws-amplify

8
推荐指数
4
解决办法
2万
查看次数

AWS Amplify-AppSync和多个DynamoDB表

初始化通过扩增出CLI新GraphQL后端,示例模式限定了与@model注释多个类型。例如...

type Blog @model {
  id: ID!
  name: String!
  posts: [Post] @connection(name: "BlogPosts")
}
type Post @model {
  id: ID!
  title: String!
  blog: Blog @connection(name: "BlogPosts")
  comments: [Comment] @connection(name: "PostComments")
}
type Comment @model {
  id: ID!
  content: String
  post: Post @connection(name: "PostComments")
}
Run Code Online (Sandbox Code Playgroud)

推送时,这将导致创建多个DynamoDB表(每个模型一个)。因此,在此示例中,创建了三个单独的DynamoDB表(博客,帖子和评论)

在我们的例子中,我们有一个Users模型,并且将要与用户关联二十个左右的小集合。当这些小型集合都属于一个表中的User对象时,我对于必须管理二十个不同的DynamoDB表感到不安。

From everything I'm reading it seems like AppSync is encouraging the use of multiple tables. For example, the Note in the screenshot below from the AWS AppSync documentation specifically calls …

amazon-web-services amazon-dynamodb graphql aws-appsync aws-amplify

8
推荐指数
2
解决办法
821
查看次数

AWSMobileClient iOS SDK-获取AWS凭证时无法获取身份ID

我有一个使用Cocoapods安装的AWSMobileClient SDK(v2.9.9)的iOS Swift项目。

应用中经常使用一种有问题的方法:

AWSMobileClient.sharedInstance().getAWSCredentials { (credentials, error) in ... }
Run Code Online (Sandbox Code Playgroud)

并且发生一个特定的致命错误:

在另一个线程中获取身份ID失败或在5秒钟内未完成。

在某些设备上,它可以在90%的时间内正常工作,并且通常只在一系列步骤之后才会发生-例如登录,注销,再次登录(登录后称为该方法)。

但是,最近一次在我一直在测试的新设备上出现过一次

还有一个堆栈问题在这里,暗示另一AWS SDK操作可以并行运行的时候getAWSCredentials被调用-但审查我的代码后,我相当肯定这是不是这样的。

我还尝试在发生故障的设备上运行此方法,以查看是否可以提供任何线索:

AWSMobileClient.sharedInstance().getIdentityId().continueWith { task -> Any? in ... }
Run Code Online (Sandbox Code Playgroud)

并返回此错误:

在另一个线程上获取标识ID失败。请通过调用getIdentityId()方法重试 。

我花了数小时来查看自己的代码和导致错误的堆栈跟踪,并陷入了如何解决甚至进一步调试的死路。

希望有人能够提出一些帮助我的建议-谢谢!:)

amazon-web-services ios swift aws-sdk aws-amplify

8
推荐指数
0
解决办法
136
查看次数

使用誓言时Amplify.Hub登录处理程序中的竞争条件

示例代码:

Hub.listen('auth', event => {
  const { event: type, data } = event.payload;

  if (type === 'signIn') {
    const session = data.signInUserSession;
    console.log('SESSION', data.signInUserSession);
    setTimeout(() => {
      console.log('SESSION', data.signInUserSession);
    }, 100);
  }
});
Run Code Online (Sandbox Code Playgroud)

使用誓言时,在提供程序重定向到我的应用程序之后,集线器将触发signIn事件。但是,该signInUserSession属性是null触发事件时的属性,但在一段时间后(100毫秒内)会得到一个值。Auth.signIn(email, password)直接使用时似乎不会发生这种情况。signInUserSession触发事件时填充。

这里发生了什么,我该如何解决?目前,我在代码中有一个明显的延迟,这是一个可怕的骇客。

javascript aws-amplify

8
推荐指数
1
解决办法
116
查看次数

(React Native - Using AWS Amplify) - 不变违规:本机模块不能为空

问题说明:

我正在使用此AWS Amplify 文档在我的 React-Native 应用程序中实现推送通知,并且使用 iOS 部分进行测试失败并显示错误“不变违规:本机模块不能为空”,但是如果我测试(获取设备令牌并发送推送通知)它工作的 Android 部分。我在 iOS 上看到的错误截图如下所示:

在此处输入图片说明

到目前为止我尝试过的:

  1. 将 react-native 版本从 0.59.10 升级到 0.61.5
  2. 根据this github post,我还尝试安装以下内容:

    @react-native-community/push-notification-ios

    npm 安装 aws-amplify@unstable

这个模块 ( aws-amplify@unstable ) 引入了一个错误,说TypeError: undefined is not an object (evaluating '_core.Amplify.register')所以我决定摆脱它。

  1. 使用最新的“@aws-amplify/pushnotification”包:“^3.0.13”适用于Android,但在iOS中我又回到原来的错误:“不变违规:本机模块不能为空

目前我已经离开了我的 package.json 如下:

"dependencies": {
"@aws-amplify/pushnotification": "^1.1.4",
"@aws-amplify/analytics": "^1.3.3",
"@react-native-community/netinfo": "^5.7.0",
"@react-native-community/push-notification-ios": "^1.2.0",
"amazon-cognito-identity-js": "^4.2.1",
"aws-amplify": "^1.2.4",
"aws-amplify-react-native": "^4.2.0",
"axios": "^0.19.2",
"cache": "^2.3.1",
"react": "16.9.0",
"react-native": "^0.62.2"
} …
Run Code Online (Sandbox Code Playgroud)

react-native aws-pinpoint aws-amplify

8
推荐指数
1
解决办法
9674
查看次数

GraphQL AWS Amplify @connection 没有引入连接的数据

正如您所看到的,我希望在联赛表中显示所有赛季和分区data > seasons。我已经设置了它,因为我相信可以使用@connection。

所以问题是,我将如何更改我的部门架构,以便将部门包含在League.

我花了很多时间阅读@connections@key并理解在使用密钥时,会使用我提供的密钥创建散列ID。但是我对多次阅读连接文档的理解不够了解为什么这不起作用。

我很想更好地理解这一点,所以我尽我所能尝试发展一种理解!

nb 我相信还值得一提的是,每次我更改架构并amplify mock重建哈希键时,它们都会被添加。我想知道这是否有一些影响?当涉及到键时,我应该在每次模式更改时完全清理 SQLite 吗? 在此处输入图片说明

联赛架构

type League @model
{
  id: ID!
  name: String!
  faId: ID!
  logo: String
  seasons: [Season] @connection(keyName: "bySeason", fields: ["id"])
  division: [Division] @connection(keyName: "byDivision", fields: ["id"])
}
Run Code Online (Sandbox Code Playgroud)

四季沙玛

type Season @model @key(name: "bySeason", fields: ["leagueID"])
{
  id: ID!
  name: String!
  faId: ID!
  yearStart: AWSDate
  yearEnd: AWSDate
  leagueID: ID!
  league: League! @connection(fields: ["leagueID"])
  division: [Division] @connection(keyName: "byDivision", fields: ["id"]) …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services amazon-dynamodb graphql aws-amplify

8
推荐指数
1
解决办法
669
查看次数

如何在没有用户交互的情况下使用 AWS/Amplify CLI 部署现有 Amplify 应用程序的新版本?

我是使用 AWS Amplify 的新手,我刚刚发布了我自己的前端 WebApp,它是用 React 开发的。我刚刚压缩了我的构建文件夹并将生成的 zip 文件放到 AWS 控制台中。它工作正常。

在此处输入图片说明

但是,这项工作是手动完成的,我想自动化。除了 AWS 中的那些之外,我还有 CI&CD 服务器,它们可以很好地用于我的其他服务。所以我需要的是一个脚本来自动化我刚刚做的事情,因为我想重用我现有的 CI&CD 服务器。拥有这样的脚本将非常有用,因为我可以在本地或在 docker 容器中重现这些步骤。

我知道有一个解决方案:放大 CLI。但是,即使 AWS 配置文件(带有密钥和访问密钥)已经配置,诸如amplify init,amplify configure和 之类的命令也amplify pull需要很多权限和大量用户交互。

做这样的事情会很棒:

amplify deploy build.zip <APP-ARN>

或(如果是文件夹)

amplify deploy /build <APP-ARN>

本质上,我只想自动化我手动执行的操作:上传(压缩)构建文件夹以部署我的 AWS Amplify 应用程序。因此,这意味着没有用户交互。

这该怎么做?

amazon-web-services aws-amplify aws-amplify-cli

8
推荐指数
1
解决办法
442
查看次数