Solicitud GET de la API de Facebook Graph – Debería contener el parámetro "campos" (Swift, Facebook SDK v4.5.1)

Mi aplicación de iOS utiliza la request de API gráfica de Facebook durante el logging para get información del usuario, que funcionó bien antes de actualizar al nuevo SDK de Facebook. Después de la actualización, obtengo un error de time de ejecución que indica: "FBSDKLog: a partir de Graph API v2.4, las requestes GET para / me deberían contener un parámetro explícito de" campos ".

Aquí está el código:

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)") } }) } }) } 

El post de error está en la línea:

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

Este código funcionó perfectamente bien antes de actualizar a SDK v4.5.1 de Facebook, pero no sé qué cambiar para que esto funcione ahora. ¡Muchas gracias a cualquiera que pueda ayudarme!

esta línea necesita un valor de parameters que NO sea nulo

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

Expandiré más, por ejemplo, y este es un tipo de código psuedo:

así que para ObjC sería esto, por ejemplo, por lo que lo anterior leería lo siguiente:

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

En rápido sería algo similar

algo como esto:

 parameters:["fields": "email"] 

Esto es solo para dos campos, y nuevamente es un código psuedo, pero debe especificar los parameters


ACTUALIZAR:

Estoy agregando esta actualización para mostrar a la gente dónde encuentras los parameters para los campos como se describe arriba, aquí hay un enlace rápido:

Aquí está la información del campo de los parameters (esto debería permanecer más o less estático con FBSDK, parte de esto es "núcleo", lo que significa que realmente no cambiará mucho, pero lo actualizaré siempre que pueda):

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

El formatting de la información a continuación es el siguiente, tipo de, acabo de hacer esto rápidamente:

"parámetro" "tipo"

"descripción"

cadena numérica id

El id de la count de usuario de esta persona. Esta identificación es única para cada aplicación y no se puede usar en diferentes aplicaciones. Nuestra guía de actualización proporciona más información sobre las ID específicas de la aplicación.

sobre cadena

La sección Acerca de mí del perfil de esta persona

age_range AgeRange

El segmento de edad para esta persona expresado como una edad mínima y máxima. Por ejemplo, más de 18, less de 21.

bio cadena

La bio de la persona

string de cumpleaños

El cumpleaños de la persona. Esta es una cadena de formatting fijo, como MM / DD / YYYY. Sin embargo, las personas pueden controlar quién puede ver el año en que nacieron por separado del mes y el día, por lo que esta cadena puede ser solo el año (AAAA) o el mes + día (MM / DD)

context UserContext

Context social para esta persona

Moneda Moneda

La información de la moneda local de la persona

list de dispositivos

La list de dispositivos que la persona está usando. Esto solo devolverá dispositivos iOS y Android.

list de educación

La educacion de la persona

cadena de correo electrónico

La dirección de correo electrónico principal de la persona que figura en su perfil. Este campo no se devolverá si no hay una dirección de correo electrónico válida.

list de favoritos_atletas

Atletas a la persona le gusta

list de favoritos_teams

Equipos deportivos a la persona le gusta

first_name string

El nombre de la persona

secuencia de género

El género seleccionado por esta persona, hombre o mujer. Este valor se omitirá si el género se establece en un valor personalizado

página de origen

La ciudad natal de la persona

list inspirational_people

Personas inspiradoras de la persona

install_type enum

Tipo de installation

instalado bool

¿La aplicación está instalando la request?

interested_in list

Los géneros a los que la persona está interesada

is_shanetworking_login bool

¿Es este un inicio de session compartido (por ejemplo, un usuario gris)?

is_verified bool

Las personas con un gran número de seguidores pueden tener la autenticidad de su identidad verificado manualmente por Facebook. Este campo indica si el perfil de la persona se verifica de esta manera. Esto es distinto del campo verificado.

list de idiomas

Páginas de Facebook que representan los idiomas que esta persona conoce

last_name string

El apellido de la persona

link string

Un enlace a la línea de time de la persona.

Página de location

La location actual de la persona ingresada por ellos en su perfil. Este campo no está relacionado con check-ins.

locale string

La location de la persona

meeting_for list

Lo que la persona está interesada en rejoin para

** middle_name string

El segundo nombre de la persona

nombre cadena

El nombre completo de la persona

CoreDefault

name_format string

El nombre de la persona con formatting para manejar correctamente los pedidos en chino, japonés o coreano.

payment_pricepoints PaymentPricepoints

Precios de pago de la persona

test_group unsigned int32

Grupo de testing de plataforma

string política

Los puntos de vista políticos de la persona

relationship_status string

Estado de la relación de la persona

cadena de religión

La religión de la persona

security_settings SecuritySettings

Configuraciones de security

significativo_ otro usuario

El otro personaje de la persona

list de deportes

Deportes a esta persona.

comillas cadena

Las citas favoritas de la persona

third_party_id cadena

Una cadena que contiene un identificador anónimo pero único para la persona. Puede usar este identificador con terceros.

zona horaria flotante (min: -24) (max: 24)

La zona horaria actual de la persona se desactiva de UTC

token_for_business string

Un token que es el mismo en todas las aplicaciones de una empresa. El acceso a este token requiere que la persona inicie session en su aplicación. Este token cambiará si el negocio que posee la aplicación cambia.

date_hora actualizada

Tiempo actualizado

shanetworking_login_upgrade_requinetworking_by datetime

El momento en que las logins compartidas se actualizarán a Business Manager por

bool verificado

Indica si la count ha sido verificada. Esto es distinto del campo is_verified. Alguien se considera verificado si toma alguna de las siguientes acciones:

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

video_upload_limits VideoUploadLimits

Límites de carga de video

viewer_can_send_gift bool

¿Puede el espectador enviar un regalo a esta persona?

cadena de website

El website de la persona

list de trabajo

Detalles de la experiencia laboral de una persona

public_key cadena

La key pública PGP de la persona

cubierta CoverPhoto


Además, aquí está el material actual de "Edge": el formatting para el material "Edge" es este, más o less, lo hice rápidamente:

"Borde"

"Descripción"

favorite_requests

Solicitudes favoritas de los desarrolladores a Graph API

request_history

Historia de request de API de gráfico de desarrolladores

counts

Páginas de Facebook que administra esta persona / es un administrador para

logros

Logros realizados en juegos de Facebook

adaccounts

Las counts publicitarias a las que esta persona tiene acceso

adaccountgroups

Grupos de counts de anuncios

adcontracts

Los contratos de anuncios de la persona

admined_groups

Agrupa los administradores de usuarios.

adnetworkanalytics

Datos de Insights para las aplicaciones de Audience Network de la persona.

albumes

Los álbumes de fotos que esta persona ha creado.

apprequests

Las requestes pendientes de esta persona desde una aplicación

apprequestformerrecipients

Solicitudes de aplicaciones

libros

Los libros enumerados en el perfil de esta persona

dominios

Los dominios que administran los usuarios

events

Eventos para esta persona. De forma pnetworkingeterminada, esto no incluye los events que la persona ha rechazado o no respondió a

familia

Las relaciones familiares de esta persona.

stream_filters

Una list de filters que se pueden aplicar al borde de noticias

lists de amigos

Listas personalizadas de amigos de la persona

ids_for_business

Las entidades comerciales pueden reclamar la propiedad de múltiples aplicaciones con el Administrador comercial. Este borde devuelve la list de ID que este usuario tiene en cualquiera de esas otras aplicaciones

invitable_friends

Una list de amigos a los que se puede invitar a instalar una aplicación Facebook Canvas.

juegos

Juegos a esta persona le gusta

grupos

Los grupos de Facebook a los que pertenece la persona

gustos

Todas las páginas que le gustaron a esta persona

películas

Películas que a esta persona le gusta

música

Música que a esta persona le gusta

objects

Objetos

permissions

Los permissions que la persona ha otorgado a esta aplicación.

fotos

Fotos en las que la persona está labelda o ha subido

image

La foto de perfil de la persona

tagged_places

Lista de lugares labeldos para esta persona. Puede include tags en videos, publicaciones, estados o enlaces.

promotable_domains

Todos los dominios que el usuario puede promocionar

promotable_events

Todos los events que el usuario puede promocionar.

taggable_friends

Amigos que pueden labelrse en contenido publicado a través de Graph API

televisión

La TV muestra a esta persona como me gusta

videos

Videos a los que la persona está labelda o cargada

video_broadcasts

Transmisiones de video de esta persona

aplicaciones

Las aplicaciones de Facebook de las que esta persona es desarrolladora.

checkins

Las revisiones que esta persona ha realizado.

alimentar

El feed de publicaciones (incluidas las actualizaciones de estado) y enlaces publicados por esta persona.

peticiones de amistad

Solicitudes de amigos pendientes de una persona.

amigos

Amigos de una persona

casa

La página de inicio de Facebook de una persona.

bandeja de input

Bandeja de input de posts de Facebook de una persona.

ubicaciones

Una fuente de publicaciones y fotos que incluyen información de location y en la que esta persona ha sido labelda. Esto es útil para build una cronología de los lugares que la persona ha visitado.

amigos en común

La list de amigos mutuos entre dos personas.

notifications

Las notifications no leídas de Facebook que tiene una persona.

bandeja de salida

Bandeja de salida de posts de Facebook de una persona.

preguntas

Las preguntas que una persona ha creado.

puntuaciones

Los puntajes que esta persona recibió de los juegos de Facebook que han jugado.

suscriptores

Los perfiles que siguen a esta persona.

suscrito a

El perfil que esta persona está siguiendo.

use "campos" como Clave y luego coma separe sus valores

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

En Obj-C insert en el método logInWithReadPermissions:

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

si deja nil en los parameters, solo recibirá id y nombre en el object de resultado, aunque haya configurado, por ejemplo:

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

No está muy claro en la documentation, espero que pueda ayudar.

Tuve el mismo problema, pero agregar opciones de campo generaría un error de request al get la foto del usuario. Solucioné este problema agregando parameters:@{@"fields": @""} simples parameters:@{@"fields": @""} al código:

 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 }} ]; 

En Swift, puede declarar varios parameters como este:

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