2012-11-21 34 views
4

使用以下授權方法進行身份驗證時,我正在通過startWithGraphPath和startForMeWithCompletionHandler獲取com.facebook.sdk錯誤5,但沒有使用requestWithGraphPath。我成功地獲取令牌(在didLogin中打印)並獲取任何我想用requestwithGraphPath但我無法使用其他方法的工作。如果有人遇到同樣的問題或類似的東西或有任何想法,我會很高興,如果你分享它。Facebook SDK 3.1 - com.facebook.sdk使用[facebook授權:權限]進行身份驗證時出現錯誤5

感謝

方法:

NSArray *permissions = [[NSArray alloc] initWithObjects: @"user_likes",@"offline_access",@"read_stream",@"publish_stream",nil]; 
[_facebook authorize:permissions]; 

回答

2

以下解決方案爲我工作。但是,如果您要存儲永久性訪問令牌,則需要確保用戶不會刪除應用程序權限,否則會出現錯誤。你可以用requestWithGraphPath - >「me/permissions」來檢查它。

應用INIT功能(例如中:didFinishLaunchingWithOptions /或您初始化你的Facebook對象這就需要將fbsessiondelegate在平均時間

...  
NSArray* permissions = [[NSArray alloc] initWithObjects:@"user_likes",@"offline_access", nil]; 

     FBSession*oursession = [[FBSession alloc] initWithPermissions:permissions]; 
... 

FBDidLogin功能:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 

實施例圖api請求功能:

NSUserDefaults *userDefaults =[NSUserDefaults standardUserDefaults]; 
     NSString *key = [userDefaults stringForKey:@"FBAccessTokenKey"]; 

    FBRequest* ourcon = [[FBRequest alloc] initWithSession:oursession graphPath:@"me/likes" parameters:params HTTPMethod:@"GET"]; 

      [ourcon startWithCompletionHandler: ^(FBRequestConnection *connection, id<FBGraphUser> result, NSError *error){ 
       if(error) 
       { 
        //NSLog(error.code); 
        return; 
       } 

       NSArray* collection = (NSArray*)[result data]; 
       NSLog(@"You have %d like", [collection count]); 

       NSDictionary* name = [collection objectAtIndex:14]; 
       NSLog(@"Like Name: %@", [name objectForKey:@"name"]); 
      }]; 
10

的startWithGraphPath等開始*方法可能不拾取活動會話。這些方法依賴於正在設置的活動會話。參見:

https://developers.facebook.com/docs/reference/ios/3.1/class/FBRequestConnection#startWithGraphPath%3AcompletionHandler%3A

「的請求使用由[FBSession activeSession]所示的活動會話。」

所以你必須做這樣的事情:

[FBSession setActiveSession:session]; 

如果會話是您以前設置的FBSession。

+0

所以,我需要在我的會議代表內創建自己的會話。我如何才能創建一個新的會話對象,只是使用授權方法的結果的令牌? –

+0

我想出瞭如何做到這一點。無論如何,通過減輕我的負擔。 –

相關問題