2015-07-21 51 views
4

我想集成Facebook登录我的Android应用程序。我正在使用Facebook-sdk-4.4.0。使用LoginManager类方法。但我上运行下面的代码 -Facebook活动加载不正确的facebook-sdk 4.4.0

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 /日志/主

I/AppHost.Android(10873):com。示例:用于处理 onActivityResult注册的侦听器。 office.docsui.common.SignInController的的/ dev /日志$ 5

---------开始/系统

I/ActivityManager(449):开始U0 {行动= NATIVE_WITH_FALLBACK CMP = COM .example.office.powerworld/com.facebook.FacebookActivity(有 演职员表}}来自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(具有 额外)}从pid 10873

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

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

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

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,8974K免费/ 11096K, 暂停27ms的20%,总30毫秒

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

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.Facilit ATOR(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):2015年7月21日17:24:38.293 PPTDROID (0x2a79)0x40066154例powerworld APPHOST PLM a2k0b中等PauseHandlerActivityLifecycleCallbacks:onActivitySaveInstanceState 称为

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

W/InputMethodManagerService(449):窗口已经聚焦,忽略 聚焦增益: [email protected] 属性= android.view.inputmethod.EditorInfo @ 423ba3a8,令牌= android.os。BinderProxy @ 41f633d8

回答

1

试试这个

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

和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"/> 
+0

什么用seesionutilmanager它不是一部分的facebook-sdk的? –

+0

是的,没有用处。请现在检查它 –

+0

我试过你的上面的代码,但我仍然得到这个空白的活动。 –