2012-07-19 55 views
0

我正在使用Xcode 4.3.1無法正確處理會話

我使用下面的代碼來獲取Facebook訪問令牌。

在的appDelegate:

facebook=[[Facebook alloc]initWithAppId:appid andDelegate:first]; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) 
{ 
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
    accessToken=facebook.accessToken; 
    date=facebook.expirationDate; 
} 
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [ self.facebook handleOpenURL:url]; 
} 

Facebook的SSO(登錄) 在的viewController:

- (IBAction爲)LoginClick:(ID)發送方 {

accesstoken=xapp.accessToken; 
    date=xapp.date; 
    [self fbDidExtendToken:xapp.accessToken expiresAt:xapp.date]; //For extending tokens 
    NSLog(@"accesstoken:%@",accesstoken); 
    if (![xapp.facebook isSessionValid]) 
    { 
     [xapp.facebook authorize:permissions]; 
    } 
    else 
    { 
     [xapp.facebook authorize: nil]; 

    } 
} 

這裏我不能能夠正確處理會話。我的要求是第一次用戶必須登錄,他應該授權應用程序。一旦他完成應用程序不應該要求uthorization.Bt現在它要求授權每個和我運行應用程序的時間。我該如何解決這個問題.....

回答

0

登錄後是否將令牌保存爲用戶默認值?

// this is a delegate method of FBSessionDelegate, called after user successfully login 
- (void)fbDidLogin 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[xapp.facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[xapp.facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 
} 
+0

雅我做到了這一點........ – Icoder 2012-07-19 08:46:39

+0

你確定應用程序:openURL:sourceApplication:sourceApplication annotation:method get called?放一個斷點來檢查它是否存在。當你運行你的代碼時會發生什麼,你是否進入Facebook登錄界面? – Eyal 2012-07-19 08:51:47

+0

s我可以,甚至我可以得到用戶名,性別和其他東西不需要訪問令牌..... PLz看看我的最新編輯在我的問題.. – Icoder 2012-07-19 09:08:06