2017-09-13 8 views
1

iOSでAWSモバイルハブを実装しようとしています。 「Googleでログイン」ボタンをクリックすると、アイデンティティブラウザに自分のアイデンティティIDが表示されます。ここに問題はありません。次に、GIDGoogleUserにアクセスします。私はGIDGoogleUserを初期化しますが、私は、ユーザー情報にアクセスすることはできません。AWSモバイルハブGoogle認証iOS

let googleUser = GIDGoogleUser.init() 

それから私がチェックユーザーがGoogleでログインしている:

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

私はXcodeで「認証エラー」出力を参照してください。私のミスはどこですか?そして、どのように私はGoogleのユーザーの電子メールとフルネームを取得できますか?

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 
} 
+0

クライアント情報へのアクセスを取得するには、クライアントのgoogle signの共有インスタンスの 'currentUser'プロパティを使用する必要があります。参照:https://developers.google.com/identity/sign-in/ios/api/interface_g_i_d_sign_in.html#ac49bf5dabe7b89781cd58e69cb015651 –

+0

ログインを確認するために 'AWSSignInManager.sharedInstance()。isLoggedIn'を使用するべきではありませんか? – Lawliet

答えて

0

私は今週、同じ問題を解決しようとするとそれがAWSGoogleSignInProviderを行うには実際には不可能であることが見出されました。

AWS Mobile SDKコードを使用すると、GIDGoogleUserシングルトンの内部的に宣言されたインスタンスが維持されます。 AWS SDKのGIDGoogleUserは別のクラス宣言であるため、コード内でGIDGoogleUser.init()を呼び出すと、そのシングルトンの2番目のインスタンスが作成されます。その時点で悪いことが起こります。残念ながら、AWS SDKはGIDGoogleUserの内部インスタンスをAPIで利用できるようにしていません。

私はまだ妥当な回避策を探しています。