Cómo habilitar las pestañas personalizadas de Chrome para iniciar sesión en Facebook con Android SDK

Estoy usando Facebook SDK versión 4.11.0 en mi aplicación.

Según los pasos descritos en la página Documentos oficiales , he añadido las siguientes cosas dentro del archivo de manifiesto para habilitar las pestañas personalizadas de Chrome.

<activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id" /> 

fb_login_protocol_scheme se agrega a strings.xml con el valor 'fb + app_id'

El proceso de autenticación está funcionando bien sin ningún problema.
La única preocupación es cuando hago clic en el botón de inicio de sesión, el diálogo de inicio de sesión no se abre en las pestañas personalizadas de Chrome, sino en el formato habitual de diálogo de vista web.

¿Hay algo que falta aquí para ser agregado al proyecto para habilitar las pestañas personalizadas de Chrome?

Puedes comprobar por qué las pestañas personalizadas de Chrome no funcionan con este fragmento:

 private static final String CUSTOM_TABS_SERVICE_ACTION = "android.support.customtabs.action.CustomTabsService"; private static final String CHROME_PACKAGE = "com.android.chrome"; private boolean isCustomTabsAllowed(Context context) { boolean isCustomTabsAllowed = true; if (!isCustomTabsEnabled(context)) { Log.d(TAG, "isCustomTabsEnabled false"); isCustomTabsAllowed = false; } if (!isChromeCustomTabsSupported(context)) { Log.d(TAG, "isChromeCustomTabsSupported false"); isCustomTabsAllowed = false; } if (!Validate.hasCustomTabRedirectActivity(context)) { Log.d(TAG, "hasCustomTabRedirectActivity false"); isCustomTabsAllowed = false; } return isCustomTabsAllowed; } private boolean isCustomTabsEnabled(Context context) { final String appId = Utility.getMetadataApplicationId(context); final Utility.FetchedAppSettings settings = Utility.getAppSettingsWithoutQuery(appId); return settings != null && settings.getCustomTabsEnabled(); } private boolean isChromeCustomTabsSupported(final Context context) { Intent serviceIntent = new Intent(CUSTOM_TABS_SERVICE_ACTION); serviceIntent.setPackage(CHROME_PACKAGE); List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentServices(serviceIntent, 0); return !(resolveInfos == null || resolveInfos.isEmpty()); } 

Estos son los métodos llamados por el SDK de Facebook antes de lanzar las pestañas personalizadas de Chrome, por lo que simplemente llamar a isCustomTabsAllowed puede entender lo que está mal con su aplicación.

Si isCustomTabsEnabled es false, hay algún problema en la configuración de la aplicación. Verifique en la consola de Facebook en la sección de la revisión de la aplicación que la aplicación está en vivo y disponible para el público.

Si isChromeCustomTabsSupported es falso, probablemente tengas una versión anterior de Chrome que no admita las pestañas personalizadas de Chrome, intenta actualizar a la última versión de Chrome.

Si hasCustomTabRedirectActivity es falso hay algunos problemas en la integración, verifique que siguió correctamente todos los pasos indicados en la guía . También compruebe que APP_ID es el mismo que se utiliza en la cadena facebook_app_id contrario el cuadro de diálogo de inicio de sesión no usará las pestañas personalizadas de Chrome.

  • El botón de inicio de sesión de Facebook provoca un bloqueo
  • AppInviteDialog no funciona en Android SDK de Facebook 4.0
  • Problema de inicio de sesión de Android Facebook SDK con parse sdk
  • Facebook AppInviteContent: El SDK no se ha inicializado, asegúrese de llamar a FacebookSdk.sdkInitialize () primero
  • Android, botón de inicio de sesión de Facebook causa bloqueo (SDK 4.0.0)
  • Fb app invita con código de referencia
  • Utiliza ShareContent de Facebook sdk en la intención de acciones android
  • Error de "ANDROID_BUILD_SDK_VERSION" con Facebook SDK
  • Cómo cambiar la altura del botón 'Iniciar sesión con Facebook'?
  • La aplicación de Android con Facebook no funciona con la aplicación de Facebook instalada
  • Facebook SDK 4.0 AppInviteDialog con devolución de llamada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.