SDK de Facebook: aplicación no registrada como un esquema de URL

82

Estoy usando el Facebook SDKencontrado aquí y estoy probando la muestra que se proporciona (en la carpeta FacebookiOSSample).

Si simplemente reemplazo el AppIdaquí con mi específico AppId, entonces ya no puedo Compartir. (Lo reemplacé tanto en el AppDelegatearchivo como en el info.plistarchivo). Ahora recibo el siguiente error:

FBSDKLog: uso no válido de FBAppCall, fb **** no está registrado como un esquema de URL. ¿Estableció 'FacebookUrlSchemeSuffix' en su plist?

De lo contrario, esto funciona bien con el original de la muestra AppIdque apunta a algo con nombre IFaceTouch.

¿Qué podría estar mal con la configuración de mi aplicación, cómo registro mi AppId?

L. Desjardins
fuente
1
Nota: La respuesta a continuación que le aconseja agregar fbauth2 a su CFBundleURLSchemes hará que su aplicación intercepte el tráfico de inicio de sesión de cambio de aplicación de Facebook de otra aplicación. NO HAGAS ESTO
Chris Maddern
Si está tratando de resolver las advertencias "canOpenURL: failed", estas solo indican que la aplicación de Facebook no está instalada en su dispositivo o simulador y puede ignorarse. '
Binoy jose

Respuestas:

225

Siga estos tres pasos:

  1. Cree una clave llamada FacebookAppID con un valor de cadena y agregue la ID de la aplicación allí.
  2. Cree una clave llamada FacebookDisplayName con un valor de cadena y agregue el nombre de visualización que configuró en el panel de la aplicación.
  3. Cree una clave de matriz denominada tipos de URL con un único subelemento de matriz denominado Esquemas de URL . Dale a esto un solo artículo con tu ID de aplicación con el prefijo fb. Esto se utiliza para garantizar que la aplicación reciba la URL de devolución de llamada del flujo de OAuth basado en web.

La .plist terminada debería verse así:

ingrese la descripción de la imagen aquí

Enlace de origen:

RaffAl
fuente
1
De acuerdo, el problema parecía ser FacebookDisplayName, esto no coincidía con mi panel de aplicaciones. ¡Gracias!
L. Desjardins
3
La mayoría de los casos el error tipográfico que podría causar un mensaje de error similar, incluso una letra mal escrita con mayúsculas / minúsculas perdidas. ¡Compruébalos dos veces!
BootMaker
4
@BootMaker En segundo lugar, el mío no funcionaba porque tenía incorrectamente "esquemas de URL" en lugar de "esquemas de URL".
Benjamin Martin
1
Puede ver una ilustración detallada con la versión 2015 actualizada para Xcode 6 aquí stackoverflow.com/a/18480723/1780492
BootMaker
También tenga cuidado de que FacebookAppID y FacebookDisplayName sean superiores a los tipos de URL. Si no es así, se bloquea en el SDK 4.
Paul Razvan Berg
20

En términos de claves y valores sin procesar, debe tener CFBundleURLTypes y CFBundleURLSchemes

En términos de claves y valores sin procesar, debe tener CFBundleURLTypes y CFBundleURLSchemes. ¡Espero que ayude!

clearwater82
fuente
1
CFBundle existe, pero el formato xml me ayudó a encontrar que mi estructura estaba mal. gracias
daniel kilinskas
16

hay otra sección debajo de la información - Tipos de URL

compruebe que los valores allí, en el campo Esquemas de URL , coincidan con el valor en los tipos de URL -> Esquemas de URL en la lista de propiedades anterior. (y también coincide con el FacebookAppID)

TIPOS DE URL

Aviram Netanel
fuente
9

Para iOS 9

Si tiene un error: 'LSApplicationQueriesSchemes'

Según la respuesta de Bear with me , también tendrás que agregar esas líneas:

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>fbauth2</string>
</array>

Mira esto .

Usted debe terminar con esas líneas al final de los archivos plist:

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb2R3234544534554</string>
            </array>
        </dict>
    </array>
    <key>FacebookAppID</key>
    <string>2R3234544534554</string>
    <key>FacebookDisplayName</key>
    <string>stevejeff</string>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>facebook.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>fbcdn.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>akamaihd.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbauth2</string>
    </array>
    </dict>
    </plist>

* Si está utilizando v4.6.0 o superior del SDK, solo necesita agregar: * (Gracias mohsinj )

   <key>LSApplicationQueriesSchemes</key>
      <array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
   </array>
JeffersonBe
fuente
1
[ACTUALIZACIÓN] Agosto - 2016 Para "LSApplicationQueriesSchemes" Tiene que agregar más elementos - <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
mohsinj
4

Vaya a este enlace Seleccione su aplicación y configure suinfo.plist

ZAFAR007
fuente
4

1- En Xcode, haga clic con el botón derecho en el archivo Info.plist de su proyecto y seleccione Abrir como -> Código fuente.

2- Inserte el siguiente fragmento XML en el cuerpo de su archivo justo antes del </dict>elemento final .

  <key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{your-app-id}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{your-app-id}</string>
<key>FacebookDisplayName</key>
<string>{your-app-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fbapi</string>
  <string>fb-messenger-share-api</string>
  <string>fbauth2</string>
  <string>fbshareextension</string>
</array>

3- Reemplaza {your-app-id} y {your-app-name} con el ID y el nombre de la aplicación de tu aplicación que se encuentran en el panel de control de la aplicación de Facebook.

Mahgol Fa
fuente
0

Hoy resolví este error simplemente eliminando el espacio de FacebookDisplayName .

asegúrese de no tener ningún espacio en FacebookDisplayName

Krutarth Patel
fuente
0

No sé si tu problema es el mismo que el mío. Pero me tomó algo de tiempo encontrarlo y lo pondré aquí para que pueda ayudar a cualquiera. El problema fue que el inicio de sesión de Google usaba el mismo nombre de atributo info.plist y estaba anulando los de Facebook. Podía ver esto en X-Code y juntarlos, ¡ahora todo funciona bien! (Atributo Tipos de URL).

Daniel Vilela
fuente
0

En mi caso, ya tenía las claves LSApplicationQueriesSchemes y CFBundleURLTypes en mi info.plist, cuando las agregué nuevamente por separado en info.plist. no leyó el segundo y no reconoce. Así que agregar valores en las claves LSApplicationQueriesSchemes y CFBundleURLTypes anteriores resolvió mi problema.

Nasir Khan
fuente
-3

También estaba enfrentando el mismo problema. Entonces hizo esto:

<dict> <key>CFBundleURLSchemes</key> <array> <string>fb154510174913175</string> <string>fbauth2</string> // add this line to remove the error </array> </dict>

y el problema está solucionado ahora.

sugeet goyal
fuente