with tutorial loginmanager loginbutton español auth android facebook callback

android - tutorial - loginButton.registerCallback no puede resolver el método



import com facebook login loginmanager (2)

Error: (36, 20) error: no se puede encontrar el método del símbolo registerCallback (CallbackManager,>)

Cuando llamé a este registerCallback desde mi Mainactivity a facebook sdk 4.0''s lib . Aquí está mi clase

public class MainActivity extends Activity { TextView tv; Button loginButton; CallbackManager callbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e("Oncreate", "Now on On create"); FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); tv =(TextView)findViewById(R.id.tv); loginButton = (LoginButton)findViewById(R.id.login_button); loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } }); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); } } }


loginButton debe ser de tipo LoginButton lugar de Button .

No relacionado: no es necesario que registre la devolución de llamada en loginButton y LoginManager.getInstance() . El primero es para el flujo de loginButton , el último si tiene su propio botón o loginButton inicio de sesión. De hecho, no está claro en la documentación de Facebook, no es tu culpa.


Debe llamar a FacebookSdk.sdkInitialize(this.getApplicationContext()) antes de setContentView() . Código de muestra:

super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(this.getApplicationContext()); setContentView(R.layout.activity_login); callbackManager = CallbackManager.Factory.create(); loginButton = (LoginButton) findViewById(R.id.loginFaceBook_button); //etc..

También la documentación menciona usar loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() o LoginManager.getInstance().registerCallback (callbackManager, new FacebookCallback<LoginResult>() , no ambos. Aquí hay un código de muestra completo :

private LoginButton loginButton; private CallbackManager callbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(this.getApplicationContext()); setContentView(R.layout.activity_login); callbackManager = CallbackManager.Factory.create(); loginButton = (LoginButton) findViewById(R.id.loginFaceBook_button); List<String> permissionNeeds = Arrays.asList("user_photos", "email", "user_birthday", "public_profile"); loginButton.setReadPermissions(permissionNeeds); loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { System.out.println("onSuccess"); } @Override public void onCancel() { System.out.println("onCancel"); } @Override public void onError(FacebookException exception) { Log.v("LoginActivity", exception.getCause().toString()); } });

No te olvides de incluir en onActivityResult :

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