react fbsdkloginkit fbsdkcorekit developer cocoa-touch xcode4.2 facebook-ios-sdk

cocoa touch - fbsdkloginkit - Facebook iOS SDK 3.1 con errores del enlazador XCode 4.2



fbsdkcorekit (5)

El SDK se basa en otros tres marcos (AdSupport, Cuentas y Social).

Para agregar estos, vaya a la sección ''Marcos y bibliotecas vinculadas'' del panel Resumen del objetivo y agréguelos.

Acabo de actualizar el SDK de iOS de Facebook en mi proyecto de 3.0 a 3.1. El proyecto ya no se compila. En su lugar obtengo los siguientes errores de vinculador:

Undefined symbols for architecture i386: "_ACFacebookAppIdKey", referenced from: -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) "_ACFacebookAudienceEveryone", referenced from: -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) "_ACFacebookAudienceFriends", referenced from: -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) "_ACFacebookAudienceKey", referenced from: -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) "_ACFacebookAudienceOnlyMe", referenced from: -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) "_ACFacebookPermissionsKey", referenced from: -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o) "_OBJC_CLASS_$_ASIdentifierManager", referenced from: objc-class-ref in FacebookSDK(FBSettings.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Los documentos de Facebook dicen claramente:

El SDK se basa en otros tres marcos (AdSupport, Cuentas y Social) para usar las funciones de Facebook incorporadas en iOS6.

Esos marcos no existen en Xcode 4.2. ¿Hay alguna solución alternativa, es decir, puedo descargar (¿dónde?) Y agregar los marcos manualmente a mi proyecto, ¿será suficiente para deshacerme de los errores de compilación o tengo que actualizar a Xcode 4.5?


Esos marcos son parte de iOS 6 (bueno, excepto para Accounts , que es de iOS 5). No podrá usarlos sin actualizar a Xcode 4.5 y, por consiguiente, a iOS 6 SDK.

Aún puede establecer su destino de implementación en iOS 4.3, si esa es su preocupación.

Creo que tus opciones son:

  1. Actualizar a Xcode 4.5, o
  2. Utilice Facebook SDK 3.0.

Los siguientes pasos pueden ser útiles para resolver este problema

  1. Descargue Facebook iOS SDK 3.0 de los enlaces presentes en la URL http://developers.facebook.com/ios/features/whats-new-ios-sdk-3/
  2. Agregue el framework FacebookSDK desde el directorio de documentos Mac
  3. Añadir sqlite3 al proyecto

Luego, probé el código en http://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/ con los siguientes cambios (como lo es para Facebook iOS SDK 3.1)

  1. Reemplace openActiveSessionWithReadPermissions con openActiveSessionWithPermissions
  2. Reemplace [FBSession.activeSession handleDidBecomeActive]; con [FBSession activeSession];

Esto funcionó para mí. Pruébalo una vez.

Gracias, prodeveloper.


Para aclarar las cosas:

Para XCode 4.5:

Si usa FB SDK3.0 , solo necesita agregar marcos y marcos de trabajo de FacebookSDK.

Si usa FB SDK3.1 , debe agregar los marcos de Cuentas, FacebookSDK, Social y AdSupport.

Si utiliza FB SDK3.2 ++ , compruebe por sí mismo qué otros marcos puede o no necesitar. ;)

Espero que lo resuma muy bien para todos.


Sobri tiene razón. Actualice a Xcode 4.5 o use SDK 3.0 o si desea usar 3.1, descargue el código fuente desde github, modifique el archivo de compilación (básicamente elimine las referencias a los marcos provistos por iOS 6.0) y reconstruya el SDK. De esa forma puede usar el SDK 3.1 y ejecutarlo en versiones anteriores de XCode.