私は同じ問題 を持っていたし、多くの時間を失っていると何の解決策が、回避策を見つけていません。
私があれば、私はFacebookを利用してALLOC - (void) openMyFacebook,
にopenMyFacebook
を呼び出して見える三つの方法
- (void) openMyFacebook
- (void) fbDidLogin
- (void) dialogFacebook
をそこに持っている私は、デリゲートに[facebook authorize:nil delegate:self];
を呼び出さない場合 はすでにNSUserDefaults 内のキーを格納している私は鍵を保管する(ファズブックの例でも同じ)。 その後、トリックが来ます。
リリースfacebookで
[facebook release];
facebook = nil;
と格納された鍵で再び- (void) openMyFacebook
を開始します。
完璧に動作します。
- (void) openMyFacebook {
if (facebook == nil) {
facebook = [[Facebook alloc] initWithAppId:@"xxxxxxxxxx"];
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![facebook isSessionValid]) {
[facebook authorize:nil delegate:self];
}
else {
[self dialogFacebook];
}
}
- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
//release!!!!
[facebook release];
facebook = nil;
//and start again
[self openMyFacebook];
}
- (void) dialogFacebook {
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
kAppId, @"app_id",
linkextern, @"link",
facebookImageUrlString, @"picture",
name, @"name",
@" ", @"message",
nil];
[facebook dialog:@"feed" andParams:params andDelegate:self];
}
他の人も同様に、このFacebookのバグを経験している:[バグレポート](http://bugs.developers.facebook.net/show_bug.cgi?id=18760)。私はfacebookがすぐにこれを修正することを願っています。 – Reinhold