标签: 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
查看次数

是否可以在不使用 Amazon Cognito 的情况下使用 AWS Amplify?

我有 android 和 iOS 应用程序。我需要允许他们在 S3 上下载和上传资产,有时希望将数据发送到移动设备而不必使用 Amazon Cognito,因为它需要花费很多钱。我有秘密密钥和访问密钥,我希望移动用户使用这些密钥,而不必使用 Amazon Cognito。

那么是否可以在没有 Amazon Cognito 的情况下使用 AWS Amplify?

amazon-cognito aws-amplify

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

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
查看次数

没有当前用户 AWS Amplify 身份验证错误 - 无需登录即可访问

目标

使用 AWS amplify 启动基于 React 的订单。由于可能存在身份验证问题,当前无法向数据库提交条目。

我有一个 AWS Amplify 后端,它被多个前端使用——一个库存管理系统和一个新的订单。

库存管理系统已设置身份验证(Cognito 用户池,使用 withAuthenticator React 组件),需要用户登录才能访问应用程序。成功完成后,它允许用户更改数据库(dynamoDB,使用 GraphQl),从数据库中获取数据等。

订单表单不需要用户登录,但我仍然需要将表单条目提交到数据库。当使用 Amplify Console 托管表单并提交表单条目时,我收到此错误:

Uncaught (in promise) No current user

有没有其他人处理过这个或类似的事情?到目前为止,我还没有找到任何有用的答案来解决这个问题。

谢谢您的帮助!

authentication reactjs graphql aws-amplify

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

错误:使用未声明的类型 BindableObject

我正在关注 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)

苹果是否有可能更改了类名?
我怎么知道?

ios swift aws-amplify swiftui

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

AWS Amplify:如何为基于电子邮件的身份验证映射社交提供商属性?

我有一个使用 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

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

(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
查看次数