2016-01-08 7 views
5

नहीं कहा जा रहा है मैं अपने एंड्रॉइड ऐप पर एक साधारण फेसबुक लॉगिन को लागू करने की कोशिश कर रहा हूं। जब मैं लॉगिन बटन पर क्लिक करता हूं, तो क्रेडेंशियल दर्ज करने के बाद ऐप को फेसबुक पेज पर रीडायरेक्ट किया जाता है, फिर से यह मेरे ऐप पर वापस आ जाता है। लेकिन लॉग इनबटन कॉलबैक फ़ंक्शन को कॉल नहीं किया जाता है। हालांकि इसके समान कुछ प्रश्न थे, लेकिन उनके पास एक अलग टुकड़ा वर्ग था। हालांकि, मैं मुख्य गतिविधि से सबकुछ कर रहा हूं।फेसबुक लॉगिनबटन कॉलबैक

package com.example.ankur.facebookdemo; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Toast; 

import com.facebook.CallbackManager; 
import com.facebook.FacebookCallback; 
import com.facebook.FacebookException; 
import com.facebook.FacebookSdk; 
import com.facebook.login.LoginResult; 
import com.facebook.login.widget.LoginButton; 

public class MainActivity extends AppCompatActivity { 
    private LoginButton loginButton; 
    CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 
     setContentView(R.layout.activity_main); 

     loginButton = (LoginButton) findViewById(R.id.login_button); 
     if (loginButton == null) { 
      Log.v("CheckLogin", "null"); 
     } 
     else { 
      Log.v("CheckLogin", "not null"); 
     } 


     loginButton.setReadPermissions("user_friends"); 

     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       // App code 
       Toast.makeText(getApplicationContext(),"Fb Login Success", Toast.LENGTH_LONG); 
       Log.v("CheckLogin", "successfully connected to facebook"); 
      } 

      @Override 
      public void onCancel() { 
       // App code 
       Toast.makeText(getApplicationContext(),"Fb on cancel",Toast.LENGTH_LONG); 
       Log.v("CheckLogin", " connection to facebook cancelled"); 

      } 

      @Override 
      public void onError(FacebookException exception) { 
       // App code 
       Toast.makeText(getApplicationContext(),"Fb Login Error",Toast.LENGTH_LONG); 
       Log.v("CheckLogin", "Error on connection to facebook"); 
      } 
     }); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
+0

एफबी के एसडीके की निर्माण निर्भरता के साथ ?? exmpl: facebookSDK = 'com.facebook.android:facebook-android-sdkodev.6.0' –

उत्तर

10

आप onActivityResult() विधि ओवरराइड करने के लिए भूल गया: निम्नलिखित मेरी कोड है। onActivityResult() कॉलबैक विधियों के परिणामस्वरूप परिणामस्वरूप।

कुछ इस तरह कार्य करें:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

आशा इस मदद करता है! शुभकामनाएँ :)

+0

बहुत बहुत धन्यवाद! यह समस्या तय की। –

+0

हैलो नारायण, मुझे कॉलबैक के साथ अब एक और समस्या है। कोड सफलता पर ऑनसेप्ट कॉलबैक को कॉल करता है, लेकिन जब मैं लॉगआउट बटन पर क्लिक करता हूं, तो ऑनकैनल को कॉल नहीं किया जाता है। मैंने इसे यहां एक और प्रश्न में रखा है: http://stackoverflow.com/questions/34978263/facebook-sdk-android-onsuccess-called-but-oncancel-not-called –

2

आप onActivityResult हुक छूट रहा है:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

The documentation स्पष्ट रूप से कहा गया है कि:

हर गतिविधि और टुकड़ा है कि आप FacebookSDK लॉग इन या साझा करना चाहिए के साथ एकीकृत कॉलबैक प्रबंधक के लिए सक्रियता पर आगे बढ़ें।

+0

बहुत बहुत धन्यवाद! यह समस्या तय की। –

+0

डेटा पर्सेलबल के रूप में इरादे अतिरिक्त के साथ लौटाता है पार्ससेल में क्या है? – JPM

संबंधित मुद्दे