2014-10-31 114 views
0

我是新来的android。我正在开发一个需要Facebook登录的应用程序。因此,对于这个我按照这个教程 - https://developers.facebook.com/docs/android/getting-started通过Android应用程序的Facebook身份验证

编辑:使用UILifecycleHelper,同样的事情发生,一旦用户通过验证的应用程序被关闭。

private Session.StatusCallback callback = new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
      if (session.isOpened()) { 
       Log.w("Vinit", "Session started"); 
       // make request to the /me API 
       Request.newMeRequest(session, new Request.GraphUserCallback() { 

       // callback after Graph API response with user object 
       @Override 
       public void onCompleted(GraphUser user, Response response) { 
        if (user != null) { 
        TextView t = (TextView) findViewById(R.id.textView1); 
        t.setText("User: " + user.getFirstName()); 

        } 
       } 
       }).executeAsync(); 
      } 
     } 
    }; 

    private FacebookDialog.Callback dialogCallback = new FacebookDialog.Callback() { 
     @Override 
     public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) { 
      Log.d("HelloFacebook", String.format("Error: %s", error.toString())); 
     } 

     @Override 
     public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) { 
      Log.d("HelloFacebook", "Success!"); 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState);    
     if(new LoginChecker(this).isRegistered()){ 
      Intent intent = new Intent(this, MainActivity.class); 
      startActivity(intent); 
     }else{ 
      setContentView(R.layout.activity_login);    
      LoginButton loginButton = (LoginButton) findViewById(R.id.loginButton1); 
      thisActivity = this; 
      loginButton.setOnClickListener(new OnClickListener() {        
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub     
        uiHelper = new UiLifecycleHelper(thisActivity, callback); 
       } 
      }); 

     } 
    } 
    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      Log.w("Vinit", "On Activity Result function"); 
      uiHelper.onActivityResult(requestCode, resultCode, data, dialogCallback); 
    } 
+0

它调用'onActivityResult'吗? – Pr38y 2014-10-31 12:41:48

+0

没有它没有调用onActivityResult – codeomnitrix 2014-10-31 13:03:38

+0

你的'会议'已经创建?检查 'Session session = Session.getActiveSession(); \t \t如果(会话== NULL){ \t \t //尝试从缓存中恢复 \t \t会话= Session.openActiveSessionFromCache(mActivity); \t \t}' – Pr38y 2014-10-31 13:35:17

回答

1
  1. 使用UiLifecycleHelper https://developers.facebook.com/docs/reference/android/current/class/UiLifecycleHelper ,以确保在适当的方式Facebook的组件的活动/片段手柄处理。
  2. 检查Facebook Session对象。 应用程序在session.IsOpened()内调用指令吗?尝试调试您的代码以查看Facebook Session的状态。
+0

嗨伙伴,它永远不会进入Session.isOpened()代码。我已经放置了一个断点,但永远不会去那里。此外,我还放置了log.d(),但logcat上也没有提供。 – codeomnitrix 2014-10-31 13:13:27

+0

你用UiLifecycleHelper试过了吗?你有没有正确的AndroidManifest?仔细阅读https://developers.facebook.com/docs/android/scrumptious/authenticate – mklimek 2014-10-31 13:24:31

+0

嗨,我已经使用UILifeCycleHelper,但结果相同,请参阅更新的代码,我会参考您发布的其他链接。谢谢 – codeomnitrix 2014-10-31 13:35:22

相关问题