2016-05-20 4 views
0

GoogleドライブのiOS SDKを使用しています。私は首尾よくユーザーをログインさせ、キーチェーンアイテムを保管して、ドライブにアクセスするたびにサインインする必要はありません。私が構築しているアプリはマルチユーザーなので、ユーザーをログアウトしてそのユーザーの保存したキーチェーンを完全に削除し、新しいユーザーの認証を処理する方法が必要です。ユーザーをログアウトする正しい手順

私は周りに読んだ、と私は、この発見した:問題は、新しいユーザーを承認しようとしたとき、以前の機能が完全にユーザーをデオーソライズしていないように見えるということです

- (IBAction)logoutButton:(id)sender { 
    [GTMOAuth2ViewControllerTouch removeAuthFromKeychainForName:kKeychainItemName]; 
} 

をこの機能はログイン・ビュー・コントローラを提示していないので:

- (IBAction)loginButton:(id)sender { 
if (!self.service.authorizer.canAuthorize) { 
    // Not yet authorized, request authorization by pushing the login UI onto the UI stack. 
    [self presentViewController:[self createAuthController] animated:YES completion:nil]; 
} 

}

私が正しく、ユーザの認証/認可を削除するために何かをしないのです私のアプリから?それとも私は違う扱いをするべきですか?

ありがとうございます。

答えて

1

私のアプリでは、GTLServiceDriveの認証者の値を維持するには、authorizer = nilを設定する必要があります。私のlogoutメソッドのコード次

、情報のため

[GTMOAuth2ViewControllerTouch removeAuthFromKeychainForName:keychainItemName]; 
     [GTLServiceDrive sharedServiceDrive].authorizer = nil; 
0

実際には、GPPSignInオブジェクトのsignOutメソッドを使用してユーザーをサインアウトすることができます。キーチェーンからOAuth 2.0トークンを削除します。 例:ドキュメントで説明したように

- (void)signOut { 
    [[GPPSignIn sharedInstance] signOut]; 
} 

その後は、Googleとあなたのアプリから切断する能力をログインユーザーに提供しなければなりません。ユーザーがアカウントを削除した場合は、アプリがGoogle APIから取得した情報を削除する必要があります。

ユーザーの代わりにアプリケーションが許可されたアクセストークンをプログラムで破棄し、ユーザーアカウントをアプリケーションから切断するサンプルコードです。

- (void)disconnect { 
    [[GPPSignIn sharedInstance] disconnect]; 
} 

- (void)didDisconnectWithError:(NSError *)error { 
    if (error) { 
    NSLog(@"Received error %@", error); 
    } else { 
    // The user is signed out and disconnected. 
    // Clean up user data as specified by the Google+ terms. 
    } 
} 

+0

おかげで、私はあなたが提供するリンクをたどって、それが廃止されていことがわかりました。 –

関連する問題