我一直在使用aws-amplify离子库,并想知道如何检查用户是否登录?我来自firebase背景所以这是完全不同的.这样我就可以根据用户的登录状态授予对某些页面的访问权限.在我的auth提供者中我导入Amplify {Auth}.我可以看到可以获得几个数据,但我不知道该使用什么.有currentUserPoolUser,getCurrentUser(),getSyncedUser(),currentAuthenticatedUser,currentSession,getCurrentUser(),userSession,currentUserCredentials,currentCredentials和currentUserInfo.我似乎无法找到任何这方面的任何文件.我阅读和观看的所有内容都会被覆盖,直到用户登录...这一切都应该在客户端完成吗?谢谢.
我同意Apollo Client很难设置,因为它有很多样板(尽管在阅读文档之后变得很简单)和诸如AWS Amplify,URQL,Apollo Boost和Micro GraphQL React之类的东西使得在客户端上使用GraphQL变得容易.
我目前正在使用AWS AppSync并希望在AWS Amplify和Apollo Client之间做出选择,而我正考虑进入所有AWS.
那么AWS Amplify和Apollo Client有什么区别?
我正在使用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(使用调试器)
是什么导致错误?
在我的反应项目中,我使用 AWS Cognito 用户池进行用户管理,对于用户身份验证,我使用 AWS Cognito idToken。90 分钟后会话将过期,然后我需要使用新的 idToken 刷新。如何使用 amplify-js 在 AWS Cognito 中处理刷新令牌服务。我试过Auth.currentSession()我会每 1 小时调用一次,但它对我不起作用。
当初始化通过扩增出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
我有一个使用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()方法重试 。
我花了数小时来查看自己的代码和导致错误的堆栈跟踪,并陷入了如何解决甚至进一步调试的死路。
希望有人能够提出一些帮助我的建议-谢谢!:)
示例代码:
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触发事件时填充。
这里发生了什么,我该如何解决?目前,我在代码中有一个明显的延迟,这是一个可怕的骇客。
问题说明:
我正在使用此AWS Amplify 文档在我的 React-Native 应用程序中实现推送通知,并且使用 iOS 部分进行测试失败并显示错误“不变违规:本机模块不能为空”,但是如果我测试(即获取设备令牌并发送推送通知)它工作的 Android 部分。我在 iOS 上看到的错误截图如下所示:
到目前为止我尝试过的:
根据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')所以我决定摆脱它。
目前我已经离开了我的 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) 正如您所看到的,我希望在联赛表中显示所有赛季和分区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
我是使用 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 应用程序。因此,这意味着没有用户交互。
这该怎么做?
aws-amplify ×10
graphql ×4
aws-appsync ×3
aws-sdk ×2
javascript ×2
reactjs ×2
aws-pinpoint ×1
ios ×1
react-native ×1
swift ×1