for ios xcode facebook swift facebook-graph-api

ios - for - Solicitud GET de la API de Facebook Graph: debe contener el parámetro "campos"(Swift, Facebook SDK v4.5.1)



login button facebook swift (5)

Mi aplicación iOS utiliza la solicitud Graph API de Facebook durante el registro para obtener información del usuario, que funcionó bien antes de actualizar al SDK más nuevo de Facebook. Después de la actualización, recibo un error de tiempo de ejecución que dice: "FBSDKLog: comenzando con Graph API v2.4, las solicitudes GET para / me deberían contener un" parámetro "de campos" explícito.

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 mensaje de error está en la línea:

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

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


En Obj-C, inserte en el método logInWithReadPermissions:

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

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

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

No está muy claro en la documentación, espero que pueda ayudar.


En Swift, puede declarar múltiples parámetros como este:

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


Tuve el mismo problema, pero agregar opciones de campo generaría un error de solicitud al recuperar la foto del usuario. Resolví 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 }} ];


esta línea necesita un valor de parámetro que NO sea nulo

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

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

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

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

En poco tiempo sería algo similar

algo como esto:

parameters:["fields": "email"]

Esto es solo para dos campos, y nuevamente es código psuedo, pero debe especificar los parámetros

ACTUALIZAR:

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

Aquí está la información del campo Parámetros (esto debería permanecer más o menos estático con FBSDK, algo 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 formato de la información a continuación es el siguiente, más o menos, lo hice rápidamente:

"parámetro" "tipo"

"descripción"

cadena numérica de identificación

La identificación de la cuenta de usuario de esta persona. Este ID es exclusivo de cada aplicación y no se puede usar en diferentes aplicaciones. Nuestra guía de actualización proporciona más información sobre ID específicos de la aplicación

sobre cuerda

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, menos de 21.

cuerda bio

La biografía de la persona

cadena de cumpleaños

El cumpleaños de la persona. Esta es una cadena de formato fijo, como MM / DD / AAAA. 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)

contexto UserContext

Contexto social para esta persona.

moneda Moneda

La información de la moneda local de la persona.

lista de dispositivos

La lista de dispositivos que usa la persona. Esto devolverá solo dispositivos iOS y Android

lista educativa

La educación 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 disponible

lista de deportistas favoritos

Atletas que le gustan a la persona

lista de equipos favoritos

Equipos deportivos que le gustan a la persona

cadena first_name

El nombre de la persona

cadena 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 la ciudad natal

La ciudad natal de la persona.

lista de personas inspiradoras

Las personas inspiradoras de la persona.

install_type enum

Tipo de instalación

bool instalado

¿Está instalada la aplicación que realiza la solicitud?

lista de interesados

Géneros en los que la persona está interesada

is_shared_login bool

¿Es este un inicio de sesión compartido (por ejemplo, un usuario gris)

está_verificado bool

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

lista de idiomas

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

cadena de apellido

El apellido de la persona

cadena de enlace

Un enlace a la línea de tiempo de la persona

Página de ubicación

La ubicación actual de la persona tal como la ingresó en su perfil. Este campo no está relacionado con los registros

cadena local

El local de la persona

reunión_para lista

Para qué está interesada la persona en reunirse

** cadena de nombre_medio

El segundo nombre de la persona

cadena de nombre

El nombre completo de la persona

CoreDefault

cadena de formato de nombre

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

Payment_pricepoints PaymentPricepoints

Los precios de pago de la persona

test_group unsigned int32

Grupo de prueba de la plataforma

cadena política

Las opiniones políticas de la persona.

cadena de estado de relación

El estado de la relación de la persona.

cadena de religión

La religión de la persona

security_settings SecuritySettings

Configuraciones de seguridad

significativo_otro usuario

El otro significante de la persona

lista de deportes

Deportes que le gustan a esta persona

cadena de citas

Las citas favoritas de la persona.

string de third_party_id

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

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

La zona horaria actual de la persona compensada por UTC

cadena token_for_business

Un token que es igual en todas las aplicaciones de una empresa. El acceso a este token requiere que la persona inicie sesión en su aplicación. Este token cambiará si la empresa propietaria de la aplicación cambia

updated_time datetime

Tiempo actualizado

shared_login_upgrade_required_by datetime

El tiempo que el inicio de sesión compartido necesita ser actualizado a Business Manager por

bool verificado

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

Register for mobile Confirm their account via SMS Enter a valid credit 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 sitio web

El sitio web de la persona

lista de trabajo

Detalles de la experiencia laboral de una persona

cadena public_key

La clave pública PGP de la persona

cover CoverPhoto

Además, aquí está el material actual de "Edge": El formato para el material de "Edge" es el siguiente, más o menos, lo hice rápidamente:

"Borde"

"Descripción"

favoritos_requests

Solicitudes favoritas de los desarrolladores a la API Graph

request_history

Historial de solicitudes de API de Graph para desarrolladores

cuentas

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

logros

Logros realizados en juegos de Facebook

Adaccounts

Las cuentas publicitarias a las que esta persona tiene acceso

adaccountgroups

Grupos de cuentas de anuncios

contratos

Los contratos publicitarios de la persona

grupos_administrados

Agrupa los administradores de usuarios

adnetworkanalytics

Datos de información para las aplicaciones de la red de audiencia de la persona

Álbumes

Los álbumes de fotos que ha creado esta persona

solicitudes

Las solicitudes pendientes de esta persona de una aplicación

apprequestformerrecipients

Solicitudes de aplicaciones

libros

Los libros que figuran en el perfil de esta persona.

dominios

Los dominios que administra el usuario

eventos

Eventos para esta persona. Por defecto, esto no incluye eventos que la persona ha rechazado o no respondió

familia

Las relaciones familiares de esta persona.

stream_filters

Una lista de filtros que se pueden aplicar al borde de la fuente de noticias

listas de amigos

Las listas de amigos personalizadas de la persona.

ids_for_business

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

invitable_friends

Una lista de amigos que pueden ser invitados a instalar una aplicación de Facebook Canvas

juegos

Juegos que le gustan a esta persona

grupos

Los grupos de Facebook a los que pertenece la persona

gustos

Todas las páginas que le han gustado a esta persona

películas

Películas que le gustan a esta persona

música

Música que le gusta a esta persona

objetos

Objetos

permisos

Los permisos que la persona ha otorgado a esta aplicación

fotos

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

imagen

La foto de perfil de la persona

tagged_places

Lista de lugares etiquetados para esta persona. Puede incluir etiquetas en videos, publicaciones, estados o enlaces

dominios_provocables

Todos los dominios que el usuario puede promover

eventos_provocables

Todos los eventos que el usuario puede promocionar.

taggable_friends

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

televisión

Programas de televisión que le gustan a esta persona

videos

Videos en los que la persona está etiquetada o cargada

video_broadcasts

Transmisiones de video de esta persona

aplicaciones

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

registros

Los registros que ha realizado esta persona.

alimentar

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

peticiones de amistad

Las solicitudes de amistad pendientes de una persona.

amigos

Los amigos de una persona.

casa

El feed de la página de inicio de una persona en Facebook.

bandeja de entrada

La bandeja de entrada de mensajes de Facebook de una persona.

ubicaciones

Una fuente de publicaciones y fotos que incluye información de ubicación y en la que esta persona ha sido etiquetada. Esto es útil para construir una cronología de los lugares que la persona ha visitado.

amigos en común

La lista de amigos mutuos entre dos personas.

notificaciones

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

bandeja de salida

La bandeja de salida de mensajes de Facebook de una persona.

preguntas

Las preguntas que una persona ha creado.

puntuaciones

Los puntajes que ha recibido esta persona 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 separe sus valores por coma

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