我一直在使用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有什么区别?
我有 android 和 iOS 应用程序。我需要允许他们在 S3 上下载和上传资产,有时希望将数据发送到移动设备而不必使用 Amazon Cognito,因为它需要花费很多钱。我有秘密密钥和访问密钥,我希望移动用户使用这些密钥,而不必使用 Amazon Cognito。
那么是否可以在没有 Amazon Cognito 的情况下使用 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()方法重试 。
我花了数小时来查看自己的代码和导致错误的堆栈跟踪,并陷入了如何解决甚至进一步调试的死路。
希望有人能够提出一些帮助我的建议-谢谢!:)
目标
使用 AWS amplify 启动基于 React 的订单。由于可能存在身份验证问题,当前无法向数据库提交条目。
我有一个 AWS Amplify 后端,它被多个前端使用——一个库存管理系统和一个新的订单。
库存管理系统已设置身份验证(Cognito 用户池,使用 withAuthenticator React 组件),需要用户登录才能访问应用程序。成功完成后,它允许用户更改数据库(dynamoDB,使用 GraphQl),从数据库中获取数据等。
订单表单不需要用户登录,但我仍然需要将表单条目提交到数据库。当使用 Amplify Console 托管表单并提交表单条目时,我收到此错误:
Uncaught (in promise) No current user
有没有其他人处理过这个或类似的事情?到目前为止,我还没有找到任何有用的答案来解决这个问题。
谢谢您的帮助!
我正在关注 SwiftUI 放大应用程序的本教程,在创建符合 Bindable 对象的最终类时遇到此错误。
Error:Use of undeclared type 'BindableObject'
import Combine
import SwiftUI
import AWSAppSync
final class TalkStore: BindableObject {
/*
Required by SwiftUI
*/
let didChange = PassthroughSubject<TalkStore, Never>()
var listTalks: [ListTodosQuery.Data.ListTodo.Item] {
didSet {
didChange.send(self)
}
}
//We will be using this later.
private let appSyncClient: AWSAppSyncClient!
/*
Init if running app is using SwiftUI Content View
*/
init(talks: [ListTodosQuery.Data.ListTodo.Item]) {
self.appSyncClient = nil
self.listTalks = talks
}
}
Run Code Online (Sandbox Code Playgroud)
苹果是否有可能更改了类名?
我怎么知道?
我有一个使用 AWS Amplify 构建的 React Web 应用程序我已经添加了 Cognito 用户池的身份验证,我没有使用用户名,我只使用电子邮件/电话选择了登录,我不想要用户名,但 Cognito 还是创建了一个随机用户名.
我希望用户使用他们的电子邮件或使用一个社交提供商(Facebook 或 Google)登录,这无关紧要,他们应该可以根据电子邮件访问同一个帐户。
我认为很正常的做法。但是,当我第一次尝试使用社交提供商登录时,我注意到 Cognito 没有为我提供相同的帐户,而是创建了一个新帐户,使用不同的用户名,并在用户池中将 EXTERNAL_PROVIDER 作为帐户状态
所以,我认为这可能只是一些映射不正确,我去了联邦部分的属性映射,我看到 Facebook Id 和 Google Sub 被分配给用户名,我试图删除它,为了我的令人惊讶的是,它被分配回了用户名。然后我想“我可以创建一个自定义属性来存储该信息,它应该没问题”。
所以我这样做了,为 Facebook 创建了一个属性,为 GoogleId 创建了一个属性......再次尝试......不,仍然回到用户名,但没有错误消息,什么都没有......
我去寻求帮助文档并找到了这个
目前,只有 Facebook id、Google sub、login with Amazon user_id 和 Sign in with Apple sub 属性可以映射到 Amazon Cognito 用户池用户名属性。
如果这总是将每个提供者 ID 与用户名相关联,那么就无法合并这些帐户我认为可能是我需要设置一个联合身份池,但阅读它似乎是用来提供 IAM 角色/外部用户的权限,我不想。
我怎么能做到这一点?
federated-identity amazon-web-services amazon-cognito aws-amplify
问题说明:
我正在使用此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 ×3
aws-sdk ×2
ios ×2
reactjs ×2
swift ×2
aws-appsync ×1
aws-pinpoint ×1
javascript ×1
react-native ×1
swiftui ×1