【问题标题】:Error initializing appsync client. invalidAuthConfiguration("AWSCognitoUserPoolsAuthProvider cannot be nil.")初始化 appsync 客户端时出错。 invalidAuthConfiguration("AWSCognitoUserPoolsAuthProvider 不能为 nil。")
【发布时间】:2020-10-05 16:32:27
【问题描述】:

我正在使用 AWS amplify 构建我的 ios 应用程序的后端。我在初始化 appsync 客户端时遇到问题。我已将 Auth 添加到后端并已登录,但我在控制台中收到以下错误:

控制台:

Error initializing appsync client. invalidAuthConfiguration("AWSCognitoUserPoolsAuthProvider cannot be nil.")

在 AppDelegate 中:

// CONFIGURE AWSAppSync
        do {
            // You can choose your database location if you wish, or use the default
            let cacheConfiguration = try AWSAppSyncCacheConfiguration()
            
            // AppSync configuration & client initialization
            let appSyncConfig = try AWSAppSyncClientConfiguration(appSyncServiceConfig: AWSAppSyncServiceConfig(), cacheConfiguration: cacheConfiguration)
            
            appSyncClient = try AWSAppSyncClient(appSyncConfig: appSyncConfig)
            print("appSyncClient initialise success \n")
        } catch {
            print("Error initializing appsync client. \(error)")
        }

我只是在这里猜测,但“appSyncConfig”变量应该是:

let appSyncConfig = try AWSAppSyncClientConfiguration(appSyncServiceConfig: AWSAppSyncServiceConfig.init(), cacheConfiguration: cacheConfiguration, userPoolsAuthProvider: AWSCognitoUserPoolsAuthProvider?)

但是我如何获得 AWSCognitoUserPoolsAuthProvider????

【问题讨论】:

    标签: swift aws-amplify aws-appsync


    【解决方案1】:

    在配置 AWS AppSync 时,您缺少添加类以从 Cognito 用户池获取令牌的步骤。 当然,这里我假设你已经选择了 Cognito User Pool 作为你的默认授权类型!

    如果您对设置 amplify GraphQL 或其他任何问题有任何疑问,请告诉我!

    import UIKit
    import AWSAppSync
    import AWSMobileClient
    
    class MyCognitoUserPoolsAuthProvider : AWSCognitoUserPoolsAuthProviderAsync {
        func getLatestAuthToken(_ callback: @escaping (String?, Error?) -> Void) {
            AWSMobileClient.default().getTokens { (tokens, error) in
                if error != nil {
                    callback(nil, error)
                } else {
                    callback(tokens?.idToken?.tokenString, nil)
                }
            }
        }
    }
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate {
        var window: UIWindow?
       
        var appSyncClient: AWSAppSyncClient?
        
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            //// Override point for customization after application launch.
            self.initializeAppSync()
            return true
        }
        
        func initializeAppSync() {
            do {
                // You can choose the directory in which AppSync stores its persistent cache databases
                let cacheConfiguration = try AWSAppSyncCacheConfiguration()
                
                // Initialize the AWS AppSync configuration
                let appSyncConfig = try AWSAppSyncClientConfiguration(appSyncServiceConfig:
                                                                        AWSAppSyncServiceConfig(),
                                                                      userPoolsAuthProvider: MyCognitoUserPoolsAuthProvider(),
                                                                      cacheConfiguration: cacheConfiguration)
                
                // Initialize the AWS AppSync client
                appSyncClient = try AWSAppSyncClient(appSyncConfig: appSyncConfig)
                print("appSyncClient initialise success.")
            } catch {
                print("Error initializing appsync client. \(error)")
            }
        }
        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多