[英]sessionStateChanged ios 6 facebook sdk 3.1
我正在實現以下代碼,以檢查應用程序中我的Facebook會話的狀態
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
if (!error) {
// We have a valid session
NSLog(@"User session found");
[self reautorizarPermisos:self ];
}
break;
case FBSessionStateClosed:
NSLog(@"sesion close");
[self loginFB:self ];
break;
case FBSessionStateClosedLoginFailed:
NSLog(@"sesssion failed");
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
[[NSNotificationCenter defaultCenter]
postNotificationName:UIDocumentStateChangedNotification
object:session];
if (error) {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"Error"
message:error.localizedDescription
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
}
此代碼是從這里訪問的facebook文檔
我正在按如下方式調用該方法
- (IBAction)login:(id)sender {
FBSession *sesion;
FBSessionState state;
NSError *error;
[self sessionStateChanged:sesion state:state error:error];
NSLog(@"loginnnnnnn");
}
問題是狀態沒有進入任何情況,顯然會話既未打開,未關閉或失敗,非常感謝您的幫助
根據文檔 , FBSessionState
的可能值為
typedef enum {
FBSessionStateCreated = 0,
FBSessionStateCreatedTokenLoaded = 1,
FBSessionStateCreatedOpening = 2,
FBSessionStateOpen = 1 | FB_SESSIONSTATEOPENBIT,
FBSessionStateOpenTokenExtended = 2 | FB_SESSIONSTATEOPENBIT,
FBSessionStateClosedLoginFailed = 1 | FB_SESSIONSTATETERMINALBIT,
FBSessionStateClosed = 2 | FB_SESSIONSTATETERMINALBIT,
} FBSessionState;
在您的switch
您不見了
FBSessionStateCreated
FBSessionStateCreatedTokenLoaded
FBSessionStateCreatedOpening
FBSessionStateOpenTokenExtended
因此您的state
值很可能就是其中之一。
如果您只想使會話的當前狀態為活動狀態,則該方法是錯誤的。 因為這是一個委托,並且僅在Fbsession發生更改時才觸發。
為了檢查fbsession的狀態,只需執行以下代碼。
if (FBSession.activeSession.isOpen)
{
//Write code to send any message. Here Facebook Session is active
}
else
{
//Call the Facebook Login page to login into the Facebook and start new session.
}
或者您也可以使用FBSession.activeSession.accessToken == nil
檢查狀態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.