簡體   English   中英

在iOS中獲取Facebook朋友時出錯

[英]Error while fetching Facebook friends in iOS

我正在嘗試獲取已登錄用戶的Facebook朋友列表,並且在我的帳戶中可以正常使用,但是當我將應用程序詳細信息遷移到新帳戶並更改了應用程序ID和應用程序密碼時,出現以下錯誤

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和密碼,則此代碼可以正常工作。 我檢查了新帳戶中的設置,一切都與我在舊帳戶中所做的相同,但我不明白問題是什么。 任何幫助表示贊賞

根據https://developers.facebook.com/docs/apps/changelog的“朋友列表”現在僅返回還使用您的應用程序的朋友:通過/ me / friends端點返回的朋友列表現在僅限於那些已授權您的應用。

所以我將上面的代碼更改為此,它給了我使用該應用程序的朋友列表,而不是整個FB朋友列表

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM