Facebook Graph API GET request - должен содержать параметр "fields" (Swift, Facebook SDK v4. 5. 1)



мое приложение iOS использует запрос API графика Facebook во время регистрации, чтобы получить информацию о пользователе, которая отлично работала до обновления до новейшего SDK Facebook. После обновления я получаю сообщение об ошибке выполнения: "FBSDKLog: начиная с Graph API v2.4, GET requests for /me должен содержать явный параметр "fields".



вот код:



func requestFacebook() {

let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

if ((error) != nil)
{
// Process error
println("Error: (error)")
}
else if error == nil
{
let birthday : NSString = (result.valueForKey("birthday") as? NSString)!

var currentDate = NSDate()
var birthdayFormatter = NSDateFormatter()
let userCalendar = NSCalendar.currentCalendar()
birthdayFormatter.dateFormat = "MM/DD/YYYY"
var birthdayNSDate = birthdayFormatter.dateFromString(birthday as String)

var userAge = self.calculateAge(birthdayNSDate!)

PFUser.currentUser()!["age"] = userAge

var facebookID: NSString = (result.valueForKey("id") as? NSString)!
var pictureURL = "https://graph.facebook.com/(facebookID)/picture?type=large&return_ssl_resources=1"

var URLRequest = NSURL(string: pictureURL)
var URLRequestNeeded = NSURLRequest(URL: URLRequest!)

NSURLConnection.sendAsynchronousRequest(URLRequestNeeded, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse!,data: NSData!, error: NSError!) -> Void in
if error == nil {
var picture = PFFile(data: data)
PFUser.currentUser()!["picture"] = picture
PFUser.currentUser()!.saveInBackgroundWithBlock({ (success, error) -> Void in
if error == nil {

var userPicture:PFFile = PFUser.currentUser()!.valueForKey("picture") as! PFFile
userPicture.getDataInBackgroundWithBlock { (imageData, error) -> Void in
if error == nil {

self.meProfileImageView.image = UIImage(data: imageData!)
var userName:String = PFUser.currentUser()!.valueForKey("username") as! String
var userAge:Int = PFUser.currentUser()!.valueForKey("age") as! Int
self.meLabel.text = "(userName), (userAge)"

self.findFriends()

}
}

} else {
println(error)
}
})
}
else {
println("Error: (error.localizedDescription)")
}
})
}
})
}


сообщение об ошибке на строку:



let birthday : NSString = (result.valueForKey("birthday") as? NSString)!


этот код работал отлично перед обновлением до Facebook SDK v4.5.1, но я не знаю, что изменить, чтобы сделать эту работу сейчас. Огромное спасибо всем, кто может мне помочь!

680   5  

5 ответов:

в этой строке необходимо значение параметров, которое не равно nil

let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)

Я буду расширять больше, например, и это своего рода код psuedo:

так что для ObjC это было бы так, например, так что выше будет читать следующее:

parameters:@{@"fields": @"id, name"}

в swift было бы что-то подобное

что-то вроде этого:

parameters:["fields": "email"]

это только для двух полей, и снова это код psuedo, но вам нужно указать параметры


обновление:

Im добавление этого обновления, чтобы показать людям, где вы найдете параметры для полей, как описано выше, вот быстрая ссылка:

вот информация о поле Paramters (это должно оставаться примерно статичным с FBSDK, некоторые из них являются "ядром", что означает, что он не будет сильно меняться, но я буду обновлять всякий раз, когда я может):

https://developers.facebook.com/docs/graph-api/reference/user

формат информации ниже следующий, вроде, Я просто сделал это быстро:

"параметр""типа"

"описание"

id числовая строка

идентификатор учетной записи данного человека. Этот идентификатор уникален для каждого приложения и не может быть используется в разных приложениях. Наше руководство по обновлению предоставляет дополнительная информация о идентификаторах приложений

о строка

раздел о себе в профиле этого человека

age_range Возрастдиапазон

возрастной сегмент для этого человека выражается как минимум и максимум возраст. Например, больше 18, меньше 21.

био строка

в био человека

день рождения строка

день рождения человека. Это строка фиксированного формата, например MM/DD / YYYY. Тем не менее, люди могут контролировать, кто может видеть год их рождения отдельно от месяца и дня так что эта строка может быть только год (Гггг) или месяц + день (ММ/ДД)

контекст UserContext

социальный контекст для этого человека

валюты Валюта

информация о местной валюте человека

устройства список

список устройств, которые использует человек. Это вернет только iOS и Android устройств

образование список

образование человека

email строка

основной адрес электронной почты человека, указанный в его профиле. Это поле не будет возвращается, если действительный адрес электронной почты не доступен

favorite_athletes список

спортсмены человек любит

favorite_teams список

спортивные команды человек любит

"имя" строка

сначала имя человека

пол строка

пол, выбранный этим человеком, мужчина или женщина. Это значение будет опущено, если пол установлен в пользовательское значение

городе страница

родной город человека

inspirational_people список

вдохновляющие люди человека

install_type перечисление

установки типа

установлен буль

приложение сделать запрос установлен?

interested_in список

пол человека интересует

is_shared_login буль

это общий логин (например, серый пользователь)

is_verified буль

люди с большим количеством последователей могут иметь подлинность их личность вручную проверяется Facebook. Это поле указывает проверяется ли профиль человека таким образом. Это отличается из проверенного поля

языки список

Facebook страницы, представляющие языки, которые этот человек знает

last_name строка

фамилия человека

ссылке строка

ссылка на временную шкалу человека

location страница

текущее местоположение человека, введенное им в своем профиле. Это поле не относится к возвратам

locale строка

человека!--5-->

meeting_for список

то, что человек заинтересован в встрече для

* * middle_name string

второе имя человека

имя строка

полное имя человека

CoreDefault

name_format строка

имя человека, отформатированное для правильной обработки китайского, японского или Корейский заказ

payment_pricepoints PaymentPricepoints

pricepoints компенсации персоны

test_group unsigned int32

тестовая платформа группа

политические строка

политические взгляды человека

relationship_status строка

статус отношений человека

религия строка

религия человека

security_settings SecuritySettings

параметры безопасности

significant_other пользователей

вторая половинка человека

спорт список

Спорт этот человек любит

кавычки строка

любимые цитаты человека

third_party_id строка

строка, содержащая анонимный, но уникальный идентификатор человек. Вы можете использовать это идентификатор с третьими лицами

часовой пояс поплавок (мин: -24) (Макс: 24)

смещение текущего часового пояса человека от UTC

token_for_business строка

токен, который является одинаковым в приложениях бизнеса. Доступ к этому знак требует, чтобы человек вошел в ваше приложение. Этот маркер изменится, если бизнес, владеющий приложением, изменится

updated_time datetime

времени

shared_login_upgrade_required_by datetime

время, в течение которого общий журнал должен быть обновлен до Business Manager на

проверен буль

указывает, была ли проверена учетная запись. Это отличается от поле is_verified. Кто-то считается проверенным, если они принимают какие-либо из следующие действия:

Register for mobile
Confirm their account via SMS
Enter a valid credit card

video_upload_limits VideoUploadLimits

ограничения загрузки видео

viewer_can_send_gift буль

может ли зритель отправить подарок этому человеку?

сайт строка

человека

работа список

детали работы человека опыт

открытый_ключ строка

открытый ключ PGP человека

покров CoverPhoto


кроме того, вот текущий материал "Edge": формат для материала "Edge" - это, грубо говоря, я сделал это быстро:

"край"

"описание"

favorite_requests

любимые запросы разработчиков к API Graph

request_history

История запросов API графика разработчиков

счета

страницы Facebook этот человек администрирует / является администратором для

достижения

достижения, сделанные в Играх Facebook

adaccounts

в рекламные аккаунты, к которым этот человек имеет доступ

adaccountgroups

группы рекламных аккаунтов

adcontracts

рекламные контракты человека

admined_groups

группы пользователей "администраторы"

adnetworkanalytics

данные Insights для приложений Audience Network человека

альбомы

фотоальбомы, созданные этим человеком

apprequests

ожидающие запросы этого человека из приложения

apprequestformerrecipients

запросы приложений

- книги

книги, перечисленные в профиле этого человека

Домены

Домены администраторов пользователей

событий

событий для этого человека. По умолчанию это не включает события человек отказался или не ответил на

семья

семейные отношения этого человека.

stream_filters

список фильтров, которые могут быть применены к краю Ленты Новостей

friendlists

пользовательские списки друзей человека

ids_for_business

субъекты предпринимательства могут претендовать на владение несколькими приложениями с помощью бизнес-менеджер. Это ребро возвращает список идентификаторов, которые есть у этого пользователя в любом из этих других приложений

invitable_friends

список друзей, которые могут быть приглашены для установки Facebook холст приложение

- игры

игры этот человек любит

группы

группы Facebook, к которым принадлежит человек

любит

все страницы этого человека понравились

фильмы

фильмы, которые этот человек любит

музыка

музыка этот человек любит

объекты

объекты

разрешения

разрешения, которые человек предоставил это приложение

фото

фотографии человек помечен или загрузил

картинка

фотография профиля человека

tagged_places

список отмеченных мест для этого человека. Он может включать теги на видео, сообщения, статусы или ссылки

promotable_domains

все домены пользователь может продвигать

promotable_events

все события, которые пользователь может продвигать.

taggable_friends

друзья, которые могут быть помечены в контенте, опубликованном с помощью графика API

телевидение

ТВ-шоу этот человек любит

видео

видео человек помечен или загружен

video_broadcasts

видеотрансляции от этого человека

приложения

приложения Facebook, что этот человек является разработчиком.

checkins

чеки этот человек сделал.

feed

лента сообщений (включая обновления статуса) и ссылки, опубликованные этот человек.

friendrequests

ожидание запросов друга человека.

друзья

друзья человека.

дома

главная страница Facebook человека.

почтовый

входящие сообщения Facebook человека.

мест

лента сообщений и фотографий, которые включают информацию о местоположении и в что этот человек был помечен. Это полезно для построения хронология мест, которые человек посетил.

mutualfriends

список общих друзей между двумя людьми.

уведомления

непрочитанные уведомления Facebook, что человек имеет.

исходящие

исходящие сообщения Facebook человека.

вопросы

вопросы, которые человек создал.

баллы

баллы этот человек получил от Facebook игр, которые они имеют сыгранный.

подписчики

профили, которые следуют за этим человеком.

subscribedto

профиль, который этот человек следует.

используйте "поля" в качестве ключа, а затем запятые разделяют ваши значения

let params = ["fields": "email, friends"]

в Obj-C вставить в метод logInWithReadPermissions:

parameters:@{@"fields": @"id, name, email"}

Если вы оставите nil в параметрах, вы получите только id и имя в объекте результата, хотя вы установили, например:

NSArray *permissionsArray = @[ @"email", @"public_profile"];

его не очень ясно в документации, надеюсь, что это может помочь.

у меня была та же проблема, но добавление параметров поля приведет к ошибке запроса при извлечении фотографии пользователя. Я решил эту проблему, добавив простой parameters:@{@"fields": @""} код:

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"me/picture"]
                              parameters:@{@"fields": @""}
                              HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    if (!error) {
        // success
    } else {
        // fail
    }}
];

в Swift, вы можете объявить несколько параметров, как это:

let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "email, first_name, last_name, gender, picture"])

Comments

    Ничего не найдено.