извлечение альбомов facebook из приложения IOS

#iphone #objective-c #ios #facebook

#iPhone #objective-c #iOS #Facebook

Вопрос:

Я пытаюсь получить любой альбом пользователя facebook в приложении для iPhone. Вот запрос fql, который я использую

 NSString *query = [NSString stringWithFormat:@"SELECT aid,object_id,owner FROM album WHERE owner=%d",fid];
  

где fid — это допустимый uid facebook, хранящийся в переменной int

результат, который я получаю, — это NSArray класс с количеством 0

что я делаю не так?

Следуя тому, что было предложено в первом ответе, я теперь пытаюсь использовать graph api таким образом:

 query = [NSString stringWithFormat:@"/%d/albums",fid];
[_facebook requestWithGraphPath:query andDelegate:self];
  

на этот раз результатом является a NSDictionary с ключом «data», возвращающим пустое NSArray значение .
В любом случае, после трех попыток получить список альбомов таким образом, я также получаю сообщение об ошибке, которое я распечатываю (как локальное, так и описание ошибки) в консоли:

 localized error : The operation couldn’t be completed. (facebookErrDomain error 10000.) 
rror : Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed.   (facebookErrDomain error 10000.)" UserInfo=0x18b5b0 {error=<CFBasicHash 0x176050 [0x3e2169fc]>{type = mutable dict, count = 2,
entries => 
    2 : <CFString 0x18ccc0 [0x3e2169fc]>{contents = "type"} = <CFString 0x18c990 [0x3e2169fc]>{contents = "OAuthException"}
3 : <CFString 0x190a90 [0x3e2169fc]>{contents = "message"} = <CFString 0x18c0d0 [0x3e2169fc]>{contents = "(#803) Some of the aliases you requested do not exist: 2147483647"}
}
} 
  

Есть идеи?

Ответ №1:

Имеет ли ваш токен авторизации разрешение на просмотр альбомов этого пользователя? В противном случае я не уверен.

Вы можете рассмотреть возможность использования Graph API вместо FQL. На iOS вы можете использовать библиотеку Facebook (доступна здесь).

Это обеспечивает метод requestWithGraphPath:andDelegate: . Вам нужен путь к графу {user_id}/albums .

Ваш результат возвращается к методу делегирования request:didLoad: , но основным преимуществом, которое может помочь вам решить вашу проблему, является необязательный метод делегирования request:didFailWithError: . При возникновении ошибки это предоставляет гораздо больше информации, чем просто пустой массив.