Facebook活动未在facebook-sdk 4.4.0中正确加载

时间:2015-07-21 03:53:27

标签: android facebook facebook-login facebook-android-sdk

我想在我的Android应用程序中集成Facebook登录。我使用的是Facebook-sdk-4.4.0。使用LoginManager类方法。但是我在运行以下代码时面临问题 -

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, "\nUsername :" + FacebookClientController.getDisplayName());
                                    Log.d(LOGTAG, "\nEmail :" + FacebookClientController.getEmailAddress());
                                    Log.d(LOGTAG, "\nUserId :" + FacebookClientController.getUserId());
                                    Log.d(LOGTAG, "\nProfilePicUrl :" + 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

我在我的应用程序中显示左侧屏幕而不是右侧屏幕,该屏幕应该运行上面的代码。谁能告诉我哪里可以出问题? logcat的:

  

--------- / dev / log / main

的开头      

I / AppHost.Android(10873):处理的注册听众   onActivityResult:com.example.office.docsui.common.SignInController $ 5

     

--------- / dev / log / system

的开头      

I / ActivityManager(449):START u0 {act = NATIVE_WITH_FALLBACK   cmp = com.example.office.powerworld / com.facebook.FacebookActivity(has   额外的)来自pid 10873

     

I / TelemetryLifeCycleState(10873):活动暂停开始。   活动:1099625720,PPTActivity,AppState = 3

     

I / ActivityManager(449):START u0 {act = NATIVE_WITH_FALLBACK   cmp = com.example.office.powerworld / com.facebook.FacebookActivity(has   额外的)来自pid 10873

     

I / TelemetryLifeCycleState(10873):活动暂停结束。   活动:1099625720,PPTActivity,AppState = 2

     

I / TelemetryLifeCycleState(10873):已创建活动。   活动:1107534680,com.facebook.FacebookActivity

     

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

     

I / AppHost.Android(10873):这不是办公室   活动:: com.facebook.FacebookActivity

     

I / TelemetryLifeCycleState(10873):活动恢复开始。   活动:1107534680,com.facebook.FacebookActivity,AppState = 2

     

I / TelemetryLifeCycleState(10873):活动恢复结束。   活动:1107534680,com.facebook.FacebookActivity,AppState = 3,   suspensionTime = 54215

     

I / TelemetryLifeCycleState(10873):活动暂停开始。   活动:1107534680,com.facebook.FacebookActivity,AppState = 3

     

I / TelemetryLifeCycleState(10873):活动暂停结束。   活动:1107534680,com.facebook.FacebookActivity,AppState = 2

     

I / TelemetryLifeCycleState(10873):已创建活动。   活动:1107673504,com.facebook.FacebookActivity

     

D / dalvikvm(10873):GC_FOR_ALLOC释放2064K,20%免费8974K / 11096K,   暂停27ms,总计30ms

     

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

     

I / AppHost.Android(10873):这不是办公室   活动:: com.facebook.FacebookActivity

     

I / TelemetryLifeCycleState(10873):活动恢复开始。   活动:1107673504,com.facebook.FacebookActivity,AppState = 2

     

I / TelemetryLifeCycleState(10873):活动恢复结束。   活动:1107673504,com.facebook.FacebookActivity,AppState = 3,   suspensionTime = 54303

     

D / mali_winsys(10873):new_window_surface返回0x3000

     

D / mali_winsys(10873):new_window_surface返回0x3000

     

D / mali_winsys(10873):new_window_surface返回0x3000

     

D / mali_winsys(10873):new_window_surface返回0x3000

     

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

     

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

     

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

     

D / mali_winsys(10873):new_window_surface返回0x3000

     

D / mali_winsys(10873):new_window_surface返回0x3000

     

I / K2_ULS(10873):07/21/2015 17:24:38.293 PPTDROID   (0x2a79)0x40066154示例powerworld AppHost   PLM a2k0b中PauseHandlerActivityLifecycleCallbacks:onActivitySaveInstanceState   叫

     

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

     

W / InputMethodManagerService(449):窗口已经聚焦,忽略   重点收益:   com.android.internal.view.IInputMethodClient$Stub$Proxy@4227f090   attribute = .android.view.inputmethod.EditorInfo@423ba3a8,token =   android.os.BinderProxy@41f633d8

1 个答案:

答案 0 :(得分:2)

试试这个

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

并覆盖以下方法

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

并在清单中定义

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