

CocoaPodsでGoogle Sign-In for
iOS(Google/SignIn)を導入し、動作確認を行っているのですが、スコープを追加した場合keyChainに情報が登録されないように思われます。

前提  
以下のサイトを参考にdelegate等の処理は追加されていること  
<https://developers.google.com/identity/sign-in/ios/start>

動作内容  
1.アプリ内からコードにてSign Inの処理を実施。  
スコープ追加有無でのそれぞれのSign In処理は以下のとおりです。

1-1スコープを追加しない場合

[code]

    [[GIDSignIn sharedInstance] signIn];
    
[/code]

1-2スコープを追加する場合

[code]

    NSString *tasksScope = @"https://www.googleapis.com/auth/tasks";
    NSString *calendarScope = @"https://www.googleapis.com/auth/calendar";
    NSArray *currentScopes = [GIDSignIn sharedInstance].scopes;
    
    NSArray *additionalScopes = [NSArray arrayWithObjects:tasksScope, calendarScope, nil];
    
    [GIDSignIn sharedInstance].scopes = [currentScopes arrayByAddingObjectsFromArray:additionalScopes];
    
    [[GIDSignIn sharedInstance] signIn];
    
[/code]

2.アプリを終了(ホームボタンダブルタップ&上スワイプでアプリを落とす)

3.再度アプリを起動し、以下のメソッドでキーチェーンへの保存状態をチェック

[code]

    [GIDSignIn sharedInstance].hasAuthInKeychain
    
[/code]

このような動作をした場合、スコープを追加しない場合はYES,追加する場合はNOが返却されます。

この挙動の場合、APIを叩く際に毎回ユーザーによる認証作業が発生するように思われます。  
スコープを追加した場合でもキーチェーンに認証情報を保存するすべはあるでしょうか？(何か設定が足りていない等)

自前で認証情報を保存しようとしましたが、モバイルでのログオンの場合、トークンのリフレッシュ時に使用する"client_secret"が得られないため、実装出来ないと考え、中止しました。

また、Google
TasksやCalendarについては個別にライブラリがあるかと思いますが、CocoaPodsでのインストールで、Swiftライブラリを共存させる場合(use_frameworks!を使用する場合)上手くライブラリをインストール出来ない事象があるようでこちらの方向も中止しています。

動作確認の実行環境は以下のとおりです。  
iOS 9.3 (シミュレータ起動)  
XCode Version 7.3

ご意見いただけますと幸いです。


CC BY-SA 3.0
2016-06-12T23:05:37.653
26696
2016-11-19T05:15:28.477
13447
question
swift ios objective-c
Google Sign-In for iOSでのスコープ追加時にキーチェーンへの認証情報が保存されない


hasAuthInKeychain する前に scopes を設定してみてください。


CC BY-SA 3.0
2016-11-19T05:15:28.477
30530
2016-11-19T05:15:28.477
19627
26696
answer