Tôi muốn đưa một số tích hợp Facebook vào ứng dụng của mình. Tại thời điểm này tôi đã quản lý để đăng nhập, gửi cho bạn bè tường, lấy danh sách bạn bè, vv Tất cả mọi thứ là OK ngoại trừ một điều ...Facebook SDK 3.1 iOS: Xử lý đăng nhập nếu người dùng xóa ứng dụng khỏi Cài đặt Facebook
Nếu người dùng xóa ứng dụng khỏi your Facebook settings/Applications và sau đó nhập vào ứng dụng iOS, mã không nhận ra rằng ứng dụng Facebook đã bị xóa khỏi cài đặt người dùng và giả định rằng đã đăng nhập (đây là vấn đề vì nếu người dùng cố gắng đăng lên tường của bạn bè, ứng dụng sẽ không làm gì).
Sau đó, người dùng đóng ứng dụng iOS và relaunches nó ... Với relaunch này, ứng dụng iOS "là cố định" và phát hiện rằng người dùng không còn đăng nhập.
tôi không thể quản lý để phát hiện thời điểm ngay sau khi người dùng xóa các ứng dụng facebook từ các thiết lập nhằm đem lại luồng đăng nhập cho người dùng ...
đây là mã của tôi:
tại hiện trường đầu tiên của ứng dụng của tôi ...
if([FBSession activeSession].state == FBSessionStateCreatedTokenLoaded)
{
NSLog(@"Logged in to Facebook");
[self openFacebookSession];
UIAlertView *alertDialog;
alertDialog = [[UIAlertView alloc] initWithTitle:@"Facebook" message:@"You're already logged in to Facebook" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alertDialog show];
[alertDialog release];
return YES;
}
else{
NSLog(@"Not logged in to Facebook"); //Show the login flow
return NO;
}
Đây là mã cho openFacebookSession
-(void)openFacebookSession
{
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"publish_stream",
nil];
[FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
[self sessionStateChanged:session state:status error:error];
}];
}
Mã cho sessionStateChanged ...
-(void)sessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen: {
NSLog(@"Session opened");
}
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
if (error) {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"Error"
message:error.localizedDescription
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
}
Cảm ơn bạn rất nhiều!
Bạn giải quyết vấn đề này như thế nào? – SAHM
Tôi chưa giải quyết được ...: C – Axort
Câu trả lời đó đã giúp tôi http://stackoverflow.com/questions/12745235/handle-invalid-accesstoken-with-fbsession-openactivesessionwithreadpermissions-i – michael23