web-dev-qa-db-fra.com

Se connecter avec Facebook bloque l'application si vous utilisez FaceBook Lite

Dans mon application, j'utilise facebook SDK pour effectuer une connexion et enregistrer des méthodes.

Je peux utiliser l'application générale FaceBook ou utiliser un navigateur Web normal sur mon appareil.

Mais lorsque j'ai FaceBook Lite sur mon appareil et que je n'ai pas l'application générale FaceBook, lorsque j'essaie de me connecter/m'inscrire à l'aide de facebook-sdk, l'application se ferme sans journal ni message. Alors je ne peux pas savoir pourquoi ce problème est arrivé.

Comment puis-je résoudre ce problème? - Puis-je ignorer l'application FaceBook Lite et utiliser le navigateur à la place?

Mettre à jour:

Voici une vidéo si j'ai une application facebook normale, pas de problèmes.

Voici une vidéo si j'ai l'application de livre de visage lite sur mon appareil, ce qui le fait planter.

Mon extrait de code:

LoginManager.getInstance()
                    .logInWithReadPermissions(getActivity(), Arrays.asList("public_profile"));

            LoginManager.getInstance()
                    .registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
                        @Override
                        public void onSuccess(final LoginResult loginResult) {
                            Log.i("MainActivity", "@@@onSuccess");
                            GraphRequest request = GraphRequest
                                    .newMeRequest(loginResult.getAccessToken(),
                                            (object, response) -> {
                                                Log.i("MainActivity",
                                                        "@@@response: " + response.toString());

                                                try {

                                                    ///
                                                } catch (JSONException e) {
                                                    ////

                                                }
                                            });

                        }

                        @Override
                        public void onCancel() {
                            Log.i("MainActivity", "@@@onCancel");
                        }

                        @Override
                        public void onError(FacebookException error) {
                            Log.i("MainActivity", "@@@onError: " + error.getMessage());
                        }

                    });
10
user6490462

Eh bien, je commençais à avoir des comportements câblés dans certainsLOLIPOPappareils fermant l’application avant même d’ouvrir l’application native de Facebook , et dans d’autres appareils, l’application se fermant uniquement avec Facebook Lite, cependant.

J'utilisais l'attribut noHistory=true sur l'activité pour que l'activité soit supprimée de la pile une fois que la boîte de dialogue s'affiche en raison de l'appel de onStop().

<activity
        Android:name=".AuthActivity"
        Android:screenOrientation="portrait"
        Android:noHistory="true"
        Android:windowSoftInputMode="stateHidden" />

Après avoir supprimé cet attribut, cela a bien fonctionné!

0
user6490462

Vous connaissez la devise de FB: aller vite et casser des choses. L'intégration du SDK avec les applications natives est une des choses qui se casse parfois.

Vous pouvez forcer Facebook SDK à utiliser le Web pour la connexion:

LoginManager.getInstance().setLoginBehavior(LoginBehavior.WEB_ONLY)
5
TpoM6oH

Le code ci-dessous fonctionne avec Facebook. ... S'il ne trouve aucune application facebook dans devide, il ouvrira webView et récupérera des donnéesAppelez la méthode suivante dans onCreate () ou onStart ():

private void facebookCallback() {
    callbackManager = CallbackManager.Factory.create();

    btnFacebook.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

            progressDialog.setMessage("Connection Facebook...");
            progressDialog.show();

            String accessToken = loginResult.getAccessToken().getToken();
            Log.i("accessToken", accessToken);

            GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {

                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {
                    Log.i("LoginActivity", response.toString());
                    try {
                        System.out.println("----------------------"+object.get("email").toString());
                        verifySocialAccount(object.get("email").toString());
                    } catch (JSONException e) {
                        LoginManager.getInstance().logOut();

                        progressDialog.dismiss();
                        Toast.makeText(LoginActivity.this,"Can not find email Address.",Toast.LENGTH_SHORT).show();
                    }
                }
            });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id, first_name, last_name, email,gender, birthday, location"); // Parámetros que pedimos a facebook
            request.setParameters(parameters);
            request.executeAsync();
        }

        @Override
        public void onCancel() {
            System.out.println("-------onCancel");
        }

        @Override
        public void onError(FacebookException error) {
            System.out.println("---------onError");
            Log.v("LoginActivity", error.getCause().toString());
        }
    });
}

Code d'activité XML:

<LinearLayout
                    Android:layout_width="match_parent"
                    Android:layout_height="0dp"
                    Android:layout_marginLeft="20dp"
                    Android:layout_marginRight="20dp"
                    Android:layout_marginTop="10dp"
                    Android:layout_weight="1"
                    Android:layout_marginBottom="10dp"
                    Android:orientation="horizontal"
                    Android:weightSum="6">


                    <com.facebook.login.widget.LoginButton
                        xmlns:facebook="http://schemas.Android.com/apk/res-auto"
                        Android:id="@+id/btnFacebook"
                        Android:layout_width="match_parent"
                        Android:layout_height="wrap_content"
                        Android:background="@color/facebookBlue"
                        Android:paddingTop="15dp"
                        Android:paddingLeft="15dp"
                        facebook:com_facebook_login_text="SIGN IN WITH FACEBOOK"
                        Android:paddingBottom="15dp"
                        Android:textColor="@color/white"
                        Android:textSize="15dp" />
                </LinearLayout>
0
amit