Facebook登录Android应用程序后无法启动另一项活动

时间:2013-12-24 05:39:52

标签: android android-facebook

我已经尝试了很多将facebook登录集成到我的Android应用程序中。我部分成功了。现在我的问题是我成功登录facebook后无法重定向到另一个活动。我认为这是因为我不是从适当的地方召集活动。我的意思是我不能在会议结束前致电活动。我在这里附上了我的代码。

  public class FacebookLogin extends Activity {

        private static List<String> permissions;
        Session.StatusCallback statusCallback = new SessionStatusCallback();
        ProgressDialog dialog;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);      
        LoginButton authButton = (LoginButton) findViewById(R.id.authButton);
       // authButton.setFragment(this);

        /***** FB Permissions *****/
        permissions = new ArrayList<String>();
        permissions.add("email");
        /***** End FB Permissions *****/
        authButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        // TODO Check if there is any Active Session, otherwise Open New Session
        Session session = Session.getActiveSession();
        if(!session.isOpened()) {
        session.openForRead(new Session.OpenRequest(FacebookLogin.this).setCallback(statusCallback).setPermissions(permissions));
        } else {
        Session.openActiveSession(FacebookLogin.this, true, statusCallback);
        }
        }
        });
        Session session = Session.getActiveSession();
        if(session == null) {
        if(savedInstanceState != null) {
        session = Session.restoreSession(this, null, statusCallback, savedInstanceState);
        }
        if(session == null) {
        session = new Session(this);
        }
        Session.setActiveSession(session);
        session.addCallback(statusCallback);
        if(session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
        session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setPermissions(permissions));
        }

        }
        }
        private class SessionStatusCallback implements Session.StatusCallback {

        @Override
        public void call(Session session, SessionState state, Exception exception) {
        //Check if Session is Opened or not
        processSessionStatus(session, state, exception);
        }
        }

        @SuppressWarnings("deprecation")
        public void processSessionStatus(Session session, SessionState state, Exception exception) {
        if(session != null && session.isOpened()) {
        if(session.getPermissions().contains("email")) {
        //Show Progress Dialog
        dialog = new ProgressDialog(FacebookLogin.this);
        dialog.setMessage("Loggin in..");
        dialog.show();
        Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

        @Override
        public void onCompleted(GraphUser user, Response response) {

        if (dialog!=null && dialog.isShowing()) {
        dialog.dismiss();
        }
        if(user != null) {
        Map<String, Object> responseMap = new HashMap<String, Object>();
        GraphObject graphObject = response.getGraphObject();
        responseMap = graphObject.asMap();
        Log.i("FbLogin", "Response Map KeySet - " + responseMap.keySet());
        // TODO : Get Email responseMap.get("email");
        String fb_id = user.getId();
        String email = null;
        String name = (String) responseMap.get("name");
        if (responseMap.get("email")!=null) {
        email = responseMap.get("email").toString();

        //TODO Login successfull Start your next activity
          Intent intent = new Intent(FacebookLogin.this, UserAccount.class);
        /*Sending some arguments*/ 
          Bundle bundle = new Bundle();

            bundle.putString("UserName",name );
            bundle.putString("Id", email);
            intent.putExtras(bundle);
            startActivity(intent);
        }
        else {
        //Clear all session info & ask user to login again
        Session session = Session.getActiveSession();
        if(session != null) {
        session.closeAndClearTokenInformation();
        }
        }
        }
        }
        });
        } else {
        session.requestNewReadPermissions(new Session.NewPermissionsRequest(FacebookLogin.this, permissions));
        }
        }
        }
        /********** Activity Methods **********/
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.d("FbLogin", "Result Code is - " + resultCode +"");
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
        /*if(resultCode==RESULT_OK) {
            Intent i = new Intent(FacebookLogin.this,UserAccount.class);
            startActivity(i); 
            } */}


        @Override
        protected void onSaveInstanceState(Bundle outState) {
        // TODO Save current session
        super.onSaveInstanceState(outState);
        Session session = Session.getActiveSession();
        Session.saveSession(session, outState);
        }
        @Override
        protected void onStart() {
        // TODO Add status callback
        super.onStart();
        Session.getActiveSession().addCallback(statusCallback);
        }
        @Override
        protected void onStop() {
        // TODO Remove callback
        super.onStop();
        Session.getActiveSession().removeCallback(statusCallback);
        }

请帮帮我..

0 个答案:

没有答案
相关问题