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.
- FacebookButton SDK v4 LoginButton ignora las personalizaciones XML
- Preguntas sobre desarrollo y lanzamiento de hachas clave para Facebook SDK para Android
- Android Facebook sdk 4.2 no puede recibir correo electrónico
- Android compartir imagen URL con Facebook SharePhotoContent
- Facebook SDK 4.0.1 Iniciar sesión sin iniciar sesión
<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?
- Inicio de sesión de Android Facebook SDK 4.0 con LoginManager
- El diálogo de la parte posterior del facebook de la identificación del poste vuelve siempre null en androide
- Invitar a los usuarios con AppInviteDialog
- No se puede agregar com.facebook.share.widget.Sharebutton to Layout XML
- No se pudo inicializar LoginButton Facebook-sdk para android
- ¿Dónde puedo ver los parámetros del evento con los eventos de la aplicación de Facebook Analytics?
- Cómo obtener la dirección de correo electrónico del usuario registrado con la solicitud de gráfico en Facebook Android sdk 4.0
- Cualquier ejemplo que muestre cómo iniciar sesión con Facebook SDK 4.0 en Android, ya sea utilizando el botón propio o el botón de Facebook?
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.