小编use*_*962的帖子

AWS Cognito 错误:未设置身份验证委托

我正在使用 XCode 7.3 在 Swift 中开发一个 iOS 应用程序。该应用程序与 DynamoDB 数据库通信,允许用户读取和写入数据。最近,我更新了我的豆荚,其中包括AWSDynamoDBAWSCognitoAWSCognitoIdentityProvider,和其他AWS豆荚。我还根据此页面上的说明设置了一个新的用户池:

http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integrating-user-pools-with-identity-pools.html

作为遵循这些说明的一部分,我将以下代码放入 AppDelegate 类的 didFinishLaunchingWithOptions 方法中:

let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil)
    let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId:APP_CLIENT_ID, clientSecret: appSecret, poolId: USER_POOL_ID)
    AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: USER_POOL_NAME)
    let pool = AWSCognitoIdentityUserPool(forKey:USER_POOL_NAME)
    let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: IDENTITY_POOL_ID, identityProviderManager:pool)
    let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)
    AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
Run Code Online (Sandbox Code Playgroud)

IDENTITY_POOL_ID通过从 AWS 控制台导航到 Cognito、Federated Identities、我按照说明“编辑身份池”创建的身份池,然后复制“身份池 ID”旁边显示的字符串来获得 的值。我通过在APP_CLIENT_ID同一页面上展开“身份验证提供程序”并选择“Cognito”选项卡获得了 的值。对于USER_POOL_NAME,我在此页面上使用了“身份池名称”,而对于USER_POOL_ID我使用了“身份验证提供程序”下列出的“用户池 ID”值。我不清楚我是否正确设置了这些值,因为我不完全确定开发人员指南说我应该使用哪些值。

更新 …

amazon-web-services ios amazon-dynamodb swift amazon-cognito

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

AWS Cognito:注销后立即重新登录时出现问题

(注意:这与我发布的这个问题相关,但由于我原来的问题已得到解答,而且我现在遇到了不同的问题,所以我将其作为一个新问题发布。)

我正在为使用 DynamoDB 和 AWS Cognito 的 iOS 应用程序设置注册和登录。我最终让注册登录过程正常工作,但我注意到每当我注销然后立即尝试重新登录时,应用程序都无法执行此操作,并且我收到错误消息只有在Invalid login token. Can't pass in a Cognito token.关闭并重新启动应用程序后才能我再次登录成功。

我主要使用这个示例项目来设置注册,但是当我实现登录方法时,我在从 Objective-C 转换到 Swift 时遇到了一些问题。我无法从示例中获取登录过程,因此我设置了一个显式登录方法:

if locked { return }
    trimRegistrationValues()
    let name = usernameField.text!
    let user = pool!.getUser(name)
    lock()
    user.getSession(name, password: passwordField.text!, validationData: nil, scopes: nil).continueWithExecutor(AWSExecutor.mainThreadExecutor(), withBlock: {
        (task:AWSTask!) -> AnyObject! in

        if task.error != nil {
            self.sendErrorPopup("ERROR: Unable to sign in. Error description: " + task.error!.description)
        } else {
            print("Successful Login")

            let loginKey = "cognito-idp.us-east-1.amazonaws.com/" + …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services ios swift amazon-cognito

5
推荐指数
1
解决办法
1721
查看次数

在Swift中实现收据验证3

我正在Swift 3中开发一个iOS应用程序,并尝试按照本教程实现收据验证:http://savvyapps.com/blog/how-setup-test-auto-renewable-subscription-ios-app.但是,该教程似乎是使用早期版本的Swift编写的,因此我不得不进行一些更改.这是我的receiptValidation()函数:

func receiptValidation() {
    let receiptPath = Bundle.main.appStoreReceiptURL?.path
    if FileManager.default.fileExists(atPath: receiptPath!){
        var receiptData:NSData?
        do{
            receiptData = try NSData(contentsOf: Bundle.main.appStoreReceiptURL!, options: NSData.ReadingOptions.alwaysMapped)
        }
        catch{
            print("ERROR: " + error.localizedDescription)
        }
        let receiptString = receiptData?.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
        let postString = "receipt-data=" + receiptString! + "&password=" + SUBSCRIPTION_SECRET
        let storeURL = NSURL(string:"https://sandbox.itunes.apple.com/verifyReceipt")!
        let storeRequest = NSMutableURLRequest(url: storeURL as URL)
        storeRequest.httpMethod = "POST"
        storeRequest.httpBody = postString.data(using: .utf8)
        let session = URLSession(configuration:URLSessionConfiguration.default)
        let task = session.dataTask(with: storeRequest as URLRequest) { data, …
Run Code Online (Sandbox Code Playgroud)

in-app-purchase ios receipt-validation swift swift3

5
推荐指数
4
解决办法
1万
查看次数