2014-05-20 32 views
2

我正在嘗試提取已登錄用戶的Facebook好友列表,但它在我的帳戶中正常工作,但是當我將應用詳細信息遷移到新帳戶並更改了應用ID和應用密碼時我得到以下在iOS中提取Facebook好友時出錯

Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0xf89c0b0 {com.facebook.sdk:HTTPStatusCode=400, com.facebook.sdk:ParsedJSONResponseKey={ 
    body =  { 
     error =   { 
      code = 100; 
      message = "(#100) Unknown fields: username."; 
      type = OAuthException; 
     }; 
    }; 
    code = 400; 
}, com.facebook.sdk:ErrorSessionKey=<FBSession: 0xe5a6c30, state: FBSessionStateOpen, loginHandler: 0xe58d5a0, appID: 705259966179163, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0xf87b180>, expirationDate: 4001-01-01 00:00:00 +0000, refreshDate: 2014-05-20 07:14:50 +0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
    status, 
    permission 
)>} 

這是我當前的代碼此錯誤獲取朋友

- (BOOL)retrieveFacebookFriendsForProfileId:(NSString *)fbProfileId completionBlock:(void (^)(NSArray *, NSError *))completionBlock 
{ 

    [FBSession openActiveSessionWithReadPermissions:nil 
             allowLoginUI:YES 
            completionHandler:^(FBSession *session, 
                 FBSessionState state, 
                 NSError *error) { 
             if (error) { 

              NSLog(@"Error"); 
             } else if (session.isOpen) { 

    [[FBRequest requestForMe] startWithCompletionHandler: ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { 
     if (error) { 
      //Throws the code 100 error here 
      completionBlock(nil, error); 
     }else{ 
      FBRequest* friendsRequest = [FBRequest requestForMyFriends]; 
      [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,NSDictionary* result,NSError *error) { 
       if(error) 
        completionBlock(nil, error); 
       else 
       { 
        NSArray *friendJSONs = [result objectForKey:@"data"]; 

        NSMutableArray *friends=[NSMutableArray array]; 
        for(NSDictionary * friendDict in friendJSONs) 
        { 
         SocialProfile *friend=[[SocialProfile alloc] initWithDictionary:friendDict socialMedia:kSocialMediaFacebook]; 
         [friends addObject:friend]; 
        } 
        completionBlock(friends, nil); 
       } 
      }]; 
     } 
    }]; 

             } 
            }]; 
    return YES; 
} 

,如果我用我的舊應用程序ID和祕密此代碼工作正常。我檢查了新帳戶中的設置,並且與我在舊帳戶中完成的操作一樣,我不明白問題所在。任何幫助表示讚賞

+0

我也得到相同的problem.whenever您得到解決方案,因此,請分享..感謝\ – Ron

+2

您是否請求了user_friends權限?在04/30之後創建的應用受到Graph API的v2.0的約束,並且您需要請求user_friends權限。有了該權限,您將可以獲得也在使用您的應用的用戶朋友列表。 –

+0

[FBRequest requestForMyFriends]不會這麼做嗎? – Gamerlegend

回答

1

根據https://developers.facebook.com/docs/apps/changelog 好友列表現在只返回的朋友誰也使用您的應用:好友列表通過/ ME /朋友端點現在僅限於已授權您的應用程序的朋友列表中返回。

所以我改變了我上面的代碼這一點,它給了我使用的應用程序,而不是整個FB好友列表中的好友列表

FBRequest *friendsRequest = [FBRequest requestForGraphPath:@"/me/friends"]; 
+0

非常感謝你:) – Karun

+0

@Karun你也可以參考這篇文章http://stackoverflow.com/questions/23417356/facebook-graph-api-v2-0-me-friends-returns-empty-or-only-朋友,誰,也-U/29182403#29182403 –