1

我正在尝试在 iOS 中实施 AWS Mobile Hub。单击“使用 Google 登录”按钮时,我在身份浏览器上看到了我的身份 ID。这里没有问题。然后我想访问 GIDGoogleUser。我初始化了 GIDGoogleUser 但我无法访问用户信息:

 let googleUser = GIDGoogleUser.init()

然后我检查了用户是否使用 google 登录:

    if(AWSGoogleSignInProvider.init().isLoggedIn){
         print("Success")
}else{
         print("Authentication error")
}

我在 xcode 中看到“身份验证错误”输出。我的错误在哪里?我怎样才能得到谷歌用户的电子邮件和全名?

AppDelegate.swift :

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        AWSGoogleSignInProvider.sharedInstance().setScopes(["profile","email", "openid"])
  AWSSignInManager.sharedInstance().register(
            signInProvider: AWSGoogleSignInProvider.sharedInstance())


 let didFinishLaunching = AWSSignInManager.sharedInstance().interceptApplication(
                application, didFinishLaunchingWithOptions: launchOptions)

        if (!isInitialized) {
            AWSSignInManager.sharedInstance().resumeSession(completionHandler: {
                (result: Any?, error: Error?) in
                print("Result: \(result) \n Error:\(error)")
            })
            isInitialized = true
        }

        return didFinishLaunching
}
4

1 回答 1

0

本周我一直在尝试解决同样的问题,但发现 AWSGoogleSignInProvider 实际上不可能做到这一点。

如果您浏览 AWS Mobile SDK 代码,您会发现它维护了一个内部声明的 GIDGoogleUser 单例实例。由于 AWS SDK 中的 GIDGoogleUser 是一个单独的类声明,因此在您的代码中调用 GIDGoogleUser.init() 会创建该单例的第二个实例。坏事在那个时候发生。不幸的是,AWS SDK 并没有通过他们的 API 提供他们的 GIDGoogleUser 内部实例。

我仍在寻找合理的解决方法。

于 2017-09-28T17:46:36.667 回答