アプリの起動中にユーザーにアラートを表示し、ユーザーがアラート ビューの [OK] ボタンをクリックすると、FB ログイン ダイアログがユーザーに表示されます。問題は、ホームボタンをクリックしてアプリを再起動してアラートを表示すると、[OK] をクリックしてもユーザーに Facebook のログインダイアログが表示されないことです。Facebook ios sdk 3.0 と xcode 4.5 gm を使用しました。*興味深いことに、アプリをバックグラウンドから強制終了すると、すべて正常に動作します。*以下は、Facebook の起動を完了したアプリのコードです。
if (!self.session.isOpen)
{
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_likes",
@"read_stream",@"publish_stream",@"email",
nil];
self.session = [[FBSession alloc] initWithPermissions:permissions];
if (self.session.state == FBSessionStateCreatedTokenLoaded)
{
// even though we had a cached token, we need to login to make the session usable
[self.session openWithCompletionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
}];
}
}
これは、ユーザーがアラート ビューの [OK] ボタンをクリックしたときに呼び出すメソッドです。
-(IBAction) facebookLogin
{
if (self.session.isOpen)
{
[self.session closeAndClearTokenInformation];
}
else
{
if (self.session.state != FBSessionStateCreated) {
// Create a new, logged out session.
self.session = [[FBSession alloc] init];
}
[self.session openWithCompletionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
if (error) {
NSLog(@"dex is %@",error.description);
}
}];
}
}