Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
562 views
in Technique[技术] by (71.8m points)

android - Facebook Activity not loading correctly in facebook-sdk 4.4.0

I want to integrate Facebook signin in my android app. I am using Facebook-sdk-4.4.0. Using the LoginManager class method. But I am facing problem on running the following code-

FacebookSdk.sdkInitialize(getApplicationContext());    
callbackmanager = CallbackManager.Factory.create();

// Set permissions
LoginManager.getInstance().logInWithReadPermissions((Activity)getContext(), Arrays.asList("email", "public_profile"));

LoginManager.getInstance().registerCallback(callbackmanager,
        new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject userInfo, GraphResponse graphResponse) {
                                try {
                                    FacebookClientController.setUserId(userInfo.optString(ID));
                                    FacebookClientController.setDisplayName(userInfo.optString(NAME));
                                    FacebookClientController.setEmailAddress(userInfo.optString(EMAIL));
                                    JSONObject picJson = userInfo.getJSONObject(PICTURE).getJSONObject("data");
                                    FacebookClientController.setProfilePicUrl(picJson.optString("url"));
                                    Log.d(LOGTAG, "
Username :" + FacebookClientController.getDisplayName());
                                    Log.d(LOGTAG, "
Email :" + FacebookClientController.getEmailAddress());
                                    Log.d(LOGTAG, "
UserId :" + FacebookClientController.getUserId());
                                    Log.d(LOGTAG, "
ProfilePicUrl :" + FacebookClientController.getProfilePicUrl());
                                } catch (JSONException e) {
                                    Log.d(LOGTAG, "Json Error");
                                }
                            }
                        }
                );
                Bundle parameters = new Bundle();
                parameters.putString(FIELDS, FB_REQUEST_FIELDS);
                request.setParameters(parameters);
                GraphRequest.executeBatchAsync(request);

                Toast.makeText(getContext(), "Login successful" + loginResult.toString(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancel() {
                Log.d(LOGTAG, "On cancel");
            }

            @Override
            public void onError(FacebookException error) {
                Log.d(LOGTAG, error.toString());
            }
        });
}

I am getting left Facebook activity in my app instead of right one

I am getting the left screen in my app instead of the right screen which should come on running the above code. Can anyone tell me where can be the problem? Logcat:

--------- beginning of /dev/log/main

I/AppHost.Android(10873): Registered listener for handling onActivityResult: com.example.office.docsui.common.SignInController$5

--------- beginning of /dev/log/system

I/ActivityManager( 449): START u0 {act=NATIVE_WITH_FALLBACK cmp=com.example.office.powerworld/com.facebook.FacebookActivity (has extras)} from pid 10873

I/TelemetryLifeCycleState(10873): Activity Pause Start. Activity:1099625720,PPTActivity, AppState=3

I/ActivityManager( 449): START u0 {act=NATIVE_WITH_FALLBACK cmp=com.example.office.powerworld/com.facebook.FacebookActivity (has extras)} from pid 10873

I/TelemetryLifeCycleState(10873): Activity Pause End. Activity:1099625720,PPTActivity, AppState=2

I/TelemetryLifeCycleState(10873): Activity Created. Activity:1107534680,com.facebook.FacebookActivity

I/AppHost.Android(10873): onActivityStarted, foregroundActivityCount=1, mEventsEnabled= true, mResumeEnabled=false

I/AppHost.Android(10873): this is not an office activity::com.facebook.FacebookActivity

I/TelemetryLifeCycleState(10873): Activity Resume Start. Activity:1107534680,com.facebook.FacebookActivity, AppState=2

I/TelemetryLifeCycleState(10873): Activity Resume End. Activity:1107534680,com.facebook.FacebookActivity, AppState=3, suspensionTime=54215

I/TelemetryLifeCycleState(10873): Activity Pause Start. Activity:1107534680,com.facebook.FacebookActivity, AppState=3

I/TelemetryLifeCycleState(10873): Activity Pause End. Activity:1107534680,com.facebook.FacebookActivity, AppState=2

I/TelemetryLifeCycleState(10873): Activity Created. Activity:1107673504,com.facebook.FacebookActivity

D/dalvikvm(10873): GC_FOR_ALLOC freed 2064K, 20% free 8974K/11096K, paused 27ms, total 30ms

I/AppHost.Android(10873): onActivityStarted, foregroundActivityCount=1, mEventsEnabled= true, mResumeEnabled=false

I/AppHost.Android(10873): this is not an office activity::com.facebook.FacebookActivity

I/TelemetryLifeCycleState(10873): Activity Resume Start. Activity:1107673504,com.facebook.FacebookActivity, AppState=2

I/TelemetryLifeCycleState(10873): Activity Resume End. Activity:1107673504,com.facebook.FacebookActivity, AppState=3, suspensionTime=54303

D/mali_winsys(10873): new_window_surface returns 0x3000

D/mali_winsys(10873): new_window_surface returns 0x3000

D/mali_winsys(10873): new_window_surface returns 0x3000

D/mali_winsys(10873): new_window_surface returns 0x3000

I/Keyboard.Facilitator( 614): onFinishInput()

I/ActivityManager( 449): Displayed com.example.office.powerworld/com.facebook.FacebookActivity: +346ms

I/ActivityManager( 449): Displayed com.example.office.powerworld/com.facebook.FacebookActivity: +346ms

D/mali_winsys(10873): new_window_surface returns 0x3000

D/mali_winsys(10873): new_window_surface returns 0x3000

I/K2_ULS (10873): 07/21/2015 17:24:38.293 PPTDROID (0x2a79) 0x40066154 Example powerworld AppHost PLM a2k0b Medium PauseHandlerActivityLifecycleCallbacks:onActivitySaveInstanceState called

I/Keyboard.Facilitator( 614): onFinishInput()

W/InputMethodManagerService( 449): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4227f090 attribute=android.view.inputmethod.EditorInfo@423ba3a8, token = android.os.BinderProxy@41f633d8

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try this one

LoginButton loginButton;
CallbackManager callbackManager;

FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();

loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions(Arrays.asList("public_profile", "user_friends", "email"));

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

            Profile profile = Profile.getCurrentProfile();
            profile.getProfilePictureUri(315, 315);
            GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject object, GraphResponse response) {
                            Log.v("LoginActivity", response.toString());
                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,email");
            request.setParameters(parameters);
            request.executeAsync();
        }

        @Override
        public void onCancel() {
        }

        @Override
        public void onError(FacebookException e) {
            e.printStackTrace();
        }
    });

and override below method

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);         
}

and define this in menifest

<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"/>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...