it-swarm.com.de

Loggen Sie sich mit Facebook ein und stürzen Sie die App ab, wenn Sie FaceBook Lite verwenden

In meiner App verwende ich facebook SDK, um Anmelde- und Registrierungsmethoden durchzuführen.

Es ist in Ordnung, wenn ich die allgemeine Anwendung FaceBook oder einen normalen Webbrowser auf meinem Gerät habe.

Wenn ich jedoch FaceBook Lite auf meinem Gerät habe und nicht die allgemeine Anwendung FaceBook habe, schließe ich mich bei der Anmeldung mit Facebook-sdk ohne Anmeldung und ohne Anmeldung Also kann ich nicht wissen, warum dieses Problem passiert ist.

Wie kann ich das Problem beheben? - Kann ich die App FaceBook Lite überspringen und stattdessen den Browser verwenden?

Aktualisieren:

Hier ist ein Video, wenn ich normale Facebook-App habe, keine Probleme.

Hier ist ein Video, wenn ich die Gesichtsbuch-App lite auf meinem Gerät habe, die zum Absturz führen kann.

Mein Code-Snippet:

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

Nun, ich bekam verdrahtetes Verhalten in einigenLOLIPOP-Geräten der App, bevor die Facebook native Anwendung geöffnet wurde, und in anderen Geräten wurde die App nur mit Facebook lite geschlossen.

Ich habe noHistory=true-Attribut für die Aktivität verwendet, sodass die Aktivität aus dem Stapel gelöscht wurde, sobald das Dialogfeld aufgrund des Aufrufs von onStop() angezeigt wird.

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

Nachdem Sie dieses Attribut entfernt haben, klappt es jetzt!

0
user6490462

Sie kennen das Motto von FB - bewegen Sie sich schnell und brechen Sie die Dinge. Die SDK-Integration in native Apps ist eines der Dinge, die manchmal kaputt gehen.

Sie können das Facebook SDK zwingen, das Web für die Anmeldung zu verwenden:

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

Nachfolgender Code funktioniert mit facebook fine . Wenn keine Facebook-App in devide gefunden wird, wird webView geöffnet und Daten abgerufen.

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());
        }
    });
}

Aktivitätscode 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