2011-04-01 24 views

Respuesta

11

Hay un ejemplo en la carpeta facebook-android-sdk/examples/simple. Muestra cómo hacer una solicitud asíncrona para los datos básicos del usuario. Podrá encontrar these data.

Saludos

+0

Alguna información como la dirección de correo electrónico requiere agregar un indicador de permiso específico a la solicitud de autenticación. Ver http://stackoverflow.com/questions/3611682/facebook-graph-api-how-to-get-users-email – larham1

3

En primer lugar se crea la aplicación y obtener el id de aplicación a continuación, pasa esta identificación a su código como este. Inicializar a nivel mundial

public static final String mAPP_ID = "Your APP ID"; 
Facebook mFacebook= new Facebook(mAPP_ID); 

y setOnClickListener en el botón dentro en Create()

// facebook login button click event 
try{    
    //mFacebook.logout(LoginActivity.this); 
    ((Button)findViewById(R.id.loginPageFaceBookButton)).setOnClickListener(loginButtonListener); 

    SessionStore.restore(mFacebook,LoginPage.this);   
} catch (Exception e) { 
     Toast.makeText(LoginPage.this,"Exception"+e.toString(), Toast.LENGTH_SHORT).show(); 
} 


    // loginButtonListener 
     //---------------------------------------------- 

     private OnClickListener loginButtonListener = new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       if(!mFacebook.isSessionValid()) 
       { 
        mFacebook.authorize(LoginPage.this, new String[] {"publish_stream","email","user_groups","read_stream","user_about_me","offline_access"},Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener()); 
       } 
       else 
       { 
        try 
        { 

         JSONObject json = Util.parseJson(mFacebook.request("me")); 
         facebookID = json.getString("id"); 
         facebookEmail = json.getString("email"); 
         faceBooklastName=json.getString("last_name"); 
         faceBookFirstName=json.getString("first_name"); 


        } 
        catch (Exception e) 
        { 
         // TODO: handle exception 
         //Toast.makeText(LoginActivity.this,"Exception FB "+e.toString(), Toast.LENGTH_SHORT).show(); 
        } 

        catch(FacebookError error) 
        { 
         Toast.makeText(LoginPage.this,error.toString(), Toast.LENGTH_SHORT).show(); 
        } 
       } 
      } 
     }; 


//onActivityResult 
    //*********************************************************** 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 

     mFacebook.authorizeCallback(requestCode, resultCode, data); 
    } 


    // DialogListener CLASS STATRT HERE. 

    public final class LoginDialogListener implements DialogListener 
     { 
      public void onComplete(Bundle values) 
      { 
       try 
       { 
        JSONObject json = Util.parseJson(mFacebook.request("me")); 
        facebookID = json.getString("id"); 
        facebookEmail = json.getString("email"); 
        SessionStore.save(mFacebook, LoginPage.this); Toast.makeText(LoginPage.this,"facebookID :"+facebookID+" \n "+"facebookEmail : "+facebookEmail, Toast.LENGTH_SHORT).show(); 
       } 
       catch(Exception error) 
       { 
        Toast.makeText(LoginPage.this, error.toString(), Toast.LENGTH_SHORT).show(); 
       } 
       catch(FacebookError error) 
       { 
        Toast.makeText(LoginPage.this, error.toString(), Toast.LENGTH_SHORT).show(); 
       } 
      } 

      public void onFacebookError(FacebookError error) { 
       Toast.makeText(LoginPage.this, "Something went wrong. Please try again.1"+error.toString(), Toast.LENGTH_LONG).show(); 
      } 

      public void onError(DialogError error) { 
       Toast.makeText(LoginPage.this, "Something went wrong. Please try again.2"+error.toString(), Toast.LENGTH_LONG).show(); 
      } 

      public void onCancel() { 
       Toast.makeText(LoginPage.this, "Something went wrong. Please try again.3", Toast.LENGTH_LONG).show(); 
      } 
      /****** Facebook Login End *******/ 

     } 
+0

Gracias. fue útil –

+3

Facebook mFacebook = new Facebook (mAPP_ID) está en desuso ahora, ¿hay alguna otra forma de hacer integración de Facebook en la aplicación de Android? – keen

8

Aquí es una forma más rápida que trabajó para mí

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.View; 

import android.widget.Toast; 

import com.facebook.Request; 
import com.facebook.Request.GraphUserCallback; 
import com.facebook.Response; 
import com.facebook.Session; 
import com.facebook.Session.StatusCallback; 
import com.facebook.SessionState; 
import com.facebook.model.GraphUser; 
import com.x.y.android.R; 

public class FBConnect extends FragmentActivity { 
    private static final String TAG = "FacebookConnect"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.facebook_connect); 


    if (Session.getActiveSession() == null 
      || Session.getActiveSession().isClosed()) { 
     Session.openActiveSession(this, true, new StatusCallback() { 

      @Override 
      public void call(Session session, SessionState state, 
        Exception exception) { 
       System.out.println("State= " + state); 

       if (session.isOpened()) { 
        System.out.println("Token=" + session.getAccessToken()); 
        Request.executeMeRequestAsync(session, 
          new GraphUserCallback() { 
           @Override 
           public void onCompleted(GraphUser user, 
             Response response) { 
            if (user != null) { 
             System.out.println("User=" + user); 

            } 
            if (response != null) { 
             System.out.println("Response=" 
               + response); 
             Toast.makeText(FBConnect.this, 
               response.toString(), 
               Toast.LENGTH_LONG).show(); 
            } 
           } 
          }); 
       } 
       if (exception != null) { 
        System.out.println("Some thing bad happened!"); 
        exception.printStackTrace(); 
       } 
      } 
     }); 
    } 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, 
      resultCode, data); 
    } 

} 
+0

gracias Thamme Gowada –

1
// Make an API call to get user data and define a 
// new callback to handle the response. 
Request request = Request.newMeRequest(session, 
     new Request.GraphUserCallback() { 
    @Override 
    public void onCompleted(GraphUser user, Response response) { 
     // If the response is successful 
     if (session == Session.getActiveSession()) { 
      if (user != null) { 
       // Set the id for the ProfilePictureView 
       // view that in turn displays the profile picture. 
       profilePictureView.setProfileId(user.getId()); 
       // Set the Textview's text to the user's name. 
       userNameView.setText(user.getName()); 
      } 
     } 
     if (response.getError() != null) { 
      // Handle errors, will do so later. 
     } 
    } 
}); 
request.executeAsync(); 

Esto se pone el ¡datos del usuario! ¡Puede encontrar todos los detalles correspondientes de acuerdo con la primera respuesta que enlaza con un documento de FB que tiene todos los campos relacionados que se pueden recuperar!

Cuestiones relacionadas