2016-04-04 30 views
2

Login2Activity'i başlattığımda, ekranı açacak ve bir saniye sonra doğrudan facebook login açılır penceresini açacak. LoginButton'a tıkladıktan sonra facebook login açılır penceresinin açılmasını istiyorum. Bunu nasıl düzeltebilirim?Android & Facebook: Nasıl butondan sonra facebook ile giriş yapılır?

public class Login2Activity extends AppCompatActivity { 

      private LoginButton loginButton; 
      private CallbackManager callbackManager; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       callbackManager = CallbackManager.Factory.create(); 
       setContentView(R.layout.activity_login2); 
       TextView mTitle = (TextView)findViewById(R.id.textView3); 
       mTitle.setTypeface(Typeface.createFromAsset(getApplication().getAssets(), "fonts/HELVETICANEUELTSTD-TH.ttf")); 


       loginButton = (LoginButton)findViewById(R.id.login_btn); 
       LoginManager.getInstance().logInWithReadPermissions(
         this, 
         Arrays.asList("user_friends")); 

       loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
        @Override 
        public void onSuccess(LoginResult loginResult) { 
         Log.d("tagger", "FB onSucces"); 
         GraphRequest request = GraphRequest.newMeRequest(
           loginResult.getAccessToken(), 
           new GraphRequest.GraphJSONObjectCallback() { 
            @Override 
            public void onCompleted(JSONObject object, GraphResponse response) { 
             Intent x = new Intent(Login2Activity.this, AddActivity.class); 
             startActivity(x); 
            } 
           }); 

         Bundle parameters = new Bundle(); 
         parameters.putString("fields", "id,first_name,last_name,email,gender,birthday,picture,friends"); 
         request.setParameters(parameters); 
         request.executeAsync(); 
        } 

        @Override 
        public void onCancel() { 
         Log.d("tagger", "FB onCancel"); 
         Toast.makeText(Login2Activity.this, "Facebook login Cancel", Toast.LENGTH_SHORT).show(); 
        } 

        @Override 
        public void onError(FacebookException e) { 
         Log.d("tagger", "FB onError"); 
         Toast.makeText(Login2Activity.this, "There is a facebook error", Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      } 
      @Override 
      protected void onActivityResult(int requestCode, int resultCode, Intent  data) 
     { 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
     } 

} 

cevap

0

Kodunuzun, facebook sdk başlatılmadan nasıl çalıştığını bilmiyorum. Uyguladığım kod sadece facebook butonu ile facebook oturum açma işlemini gerçekleştiriyor. SetContView'dan önce Facebooksdk başlatılmalıdır. Talimatların sırasından dolayı kodunuzun düzgün çalışmayabileceğini düşünüyorum.

//inside on create 
    FacebookSdk.sdkInitialize(this.getApplicationContext()); 
    setContentView(R.layout.activity_login); 

    LoginButton loginButton = (LoginButton) findViewById(R.id.alogin_btn_facebook); 
    loginButton.setReadPermissions(Arrays.asList("public_profile", "email")); 
    callbackManager = CallbackManager.Factory.create(); 

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     ...rest of the success/error/cancel code 
İlgili konular