2014-02-06 4 views
1

좋아,Facebook 로그인이 작동하지 않습니다. 무엇을 잊었습니까?

나는 이것을 4 시간 연속하고있다. 페이스 북 로그인은 여전히 ​​작동하지 않습니다. 세션 상태는 항상 OPENING입니다. 항상. onActivityResult는 결코 호출되지 않습니다. 개발자 콘솔의 키는 기동 클래스가 정확한지, 정확, 이것은 내 코드

package XXXXX 

import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 
import java.util.Arrays; 
import java.util.HashMap; 
import java.util.Map; 

import ua.org.zasadnyy.zvalidations.Field; 
import ua.org.zasadnyy.zvalidations.Form; 
import ua.org.zasadnyy.zvalidations.validations.HasMinimumLength; 
import ua.org.zasadnyy.zvalidations.validations.IsEmail; 
import ua.org.zasadnyy.zvalidations.validations.NotEmpty; 
import android.content.Intent; 
import android.content.pm.PackageInfo; 
import android.content.pm.PackageManager; 
import android.content.pm.PackageManager.NameNotFoundException; 
import android.content.pm.Signature; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.util.Base64; 
import android.util.Log; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

import com.facebook.Request; 
import com.facebook.Response; 
import com.facebook.Session; 
import com.facebook.SessionState; 
import com.facebook.UiLifecycleHelper; 
import com.facebook.model.GraphUser; 
import com.facebook.widget.LoginButton; 

public class SplashScreen extends FragmentActivity { 

    public static String TAG = "SplashScreen"; 

    /** 
    * LoginActivity 
    */ 
    private static final int LOGIN   = 0; 
    private static final int SIGNUP   = 1; 
    private static final int SELECTUSERNAME = 2; 
    private static final int FRAGMENT_COUNT = SELECTUSERNAME +1; 
    private boolean isResumed    = false; 
    private Fragment[] fragments   = new Fragment[FRAGMENT_COUNT]; 
    private MenuItem settings; 
    private UiLifecycleHelper uiHelper; 
    private Session.StatusCallback callback = 
     new Session.StatusCallback() { 
     @Override 
     public void call(Session session, 
       SessionState state, Exception exception) { 
      onSessionStateChange(session, state, exception); 
     } 
    }; 

    /** 
    * UI Elements 
    */ 
    Button btn_signUp; 
    Button btn_signUpSubmit; 
    LoginButton btn_facebookAuth; 
    //Edit Text 
    EditText edittextEmail; 
    EditText edittextPassword; 

    //Form 
    Form signUpForm; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.i(TAG, "onCreate"); 
     uiHelper      = new UiLifecycleHelper(this, callback); 
     uiHelper.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 

     FragmentManager fm    = getSupportFragmentManager(); 
     fragments[LOGIN]    = fm.findFragmentById(R.id.loginFragment); 
     fragments[SIGNUP]    = fm.findFragmentById(R.id.signUpFragment); 
     fragments[SELECTUSERNAME]  = fm.findFragmentById(R.id.selectUserNameFragment); 


     FragmentTransaction transaction = fm.beginTransaction(); 
     for(int i = 0; i < fragments.length; i++) { 
      transaction.hide(fragments[i]); 
     } 
     transaction.commit(); 

     btn_signUp      = (Button) findViewById(R.id.btn_signUpMail); 
     btn_signUp.setOnClickListener(listener_btn_signUp); 

     btn_signUpSubmit = (Button) findViewById(R.id.btn_signUpSubmit); 
     btn_signUpSubmit.setOnClickListener(listener_btn_signUpSubmit); 

     edittextEmail  = (EditText)findViewById(R.id.et_signUpMail); 
     edittextPassword = (EditText)findViewById(R.id.et_signUpPw); 

     signUpForm   = new Form (this); 
     signUpForm.addField(Field.using(edittextEmail).validate(NotEmpty.build(this.getApplicationContext())).validate(IsEmail.build(this.getApplicationContext()))); 
     signUpForm.addField(Field.using(edittextPassword).validate(NotEmpty.build(this.getApplicationContext())).validate(HasMinimumLength.build(this.getApplicationContext(), 8))); 

     btn_facebookAuth = (LoginButton)findViewById(R.id.login_button); 
     btn_facebookAuth.setReadPermissions(Arrays.asList("email")); 
    } 

    private OnClickListener listener_btn_signUp = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      showFragment(SIGNUP, true); 
     } 
    }; 

    private OnClickListener listener_btn_signUpSubmit = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (signUpForm.isValid()) { 
       Log.i("SignupFragment", "Form is valid"); 
//    User userModel = new User(); 
//    userModel.isFacebookConnected     = "0"; 
//    userModel.userEmail        = edittextEmail.getText().toString(); 
//    userModel.userPassword       = edittextPassword.getText().toString(); 
//    SelectUserNameFragment selectUserNameFragment = new SelectUserNameFragment(); 
//    SelectUserNameFragment.user      = userModel; 
//    getFragmentManager() 
//    .beginTransaction() 
//    .replace(android.R.id.content, selectUserNameFragment) 
//    .addToBackStack("") 
//    .commit(); 
      } else { 
       Log.i("SignupFragment", "Form not valid"); 
      } 
     } 
    }; 

    private void showFragment(int fragmentIndex, boolean addToBackStack) { 
     Log.i(TAG, "showFragment"); 
     FragmentManager fm    = getSupportFragmentManager(); 
     FragmentTransaction transaction = fm.beginTransaction(); 
     for (int i = 0; i < fragments.length; i++) { 
      if (i == fragmentIndex) { 
       transaction.show(fragments[i]); 
      } else { 
       transaction.hide(fragments[i]); 
      } 
     } 
     if (addToBackStack) { 
      transaction.addToBackStack(null); 
     } 
     transaction.commit(); 
    } 

    private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
     Log.i(TAG, "onSessionStateChange"); 
     FragmentManager manager = getSupportFragmentManager(); 
     int backStackSize = manager.getBackStackEntryCount(); 
     for (int i = 0; i < backStackSize; i++) { 
      manager.popBackStack(); 
     } 
     System.out.println (state.name()); 
     if (state.isOpened()) { 
      Request.newMeRequest(session, new Request.GraphUserCallback() { 
        @Override 
        public void onCompleted(GraphUser user, Response response) { 
        if (user != null) { 
         try { 
          User userModel    = new User(); 
          userModel.facebookId  = user.getId(); 
          Map<String, String> where = new HashMap<String, String>(); 
          where.put("where", "WHERE facebookId='" + user.getId() + "'"); 
          userModel.loadModelFrom(where); 
          if (userModel.userData.isEmpty()) { 
           userModel.isFacebookConnected = "1"; 
           userModel.userEmail    = user.asMap().get("email").toString(); 
           SelectUserNameFragment.user      = userModel; 
           showFragment(SELECTUSERNAME, true); 
          } else { 
           Intent intent = new Intent (getApplicationContext(), DashboardActivity.class); 
           intent.putExtra("User", userModel); 
           startActivity(intent); 
          } 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 
        } 
        } 
      }).executeAsync(); 
//    showFragment(DASHBOARD, false); 
     } else if (state.isClosed()) { 
      showFragment(LOGIN, false); 
     } 
    } 

    @Override 
    protected void onResumeFragments() { 
     super.onResumeFragments(); 
     Log.i(TAG, "onResumeFragments"); 

     Session session = Session.getActiveSession(); 
     if (session != null && session.isOpened()) { 
      Intent intent = new Intent (this, DashboardActivity.class); 
      intent.putExtra("Session", session); 
      startActivity(intent); 
     } else { 
      showFragment(LOGIN, false); 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     Log.i(TAG, "onResume"); 

     uiHelper.onResume(); 
     isResumed = true; 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     Log.i(TAG, "onPause"); 

     uiHelper.onPause(); 
     isResumed = false; 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.i(TAG, "onActivityResult"); 
     super.onActivityResult(requestCode, resultCode, data); 
     uiHelper.onActivityResult(requestCode, resultCode, data); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Log.i(TAG, "onDestroy"); 

     uiHelper.onDestroy(); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     Log.i(TAG, "onSaveInstanceState"); 

     uiHelper.onSaveInstanceState(outState); 
    } 
} 

나는 무엇을 잊지 않았다입니까?

답변

1

은 분명히 매니페스트에

android:noHistory="true"을 할 수 없습니다. 나는 그것을 제거하고 이제는 효과가있다.

관련 문제