Hola,
Sin enviar la aplicación para su revisión en Facebook, no podemos obtener el DOB y la ubicación del usuario de Facebook, etc. Pero para fines de prueba, podemos obtener el DOB y la ubicación solo del administrador , desarrollador y probador del creador de la aplicación de Facebook .
Descargue el código fuente desde aquí ( Obtenga la ubicación del usuario de Facebook usando la API gráfica en Android )
- Cómo instalar aplicaciones directamente en la tarjeta SD en Android 4.2.2 Jelly Bean
- ¿Cuáles son los juegos de Android más adictivos?
- ¿Existe un reproductor de video 360 para Android que puede reproducir videos sin conexión usando Gyrosensor como Google Spotlight?
- ¿Debo ir a un trabajo o continuar con el desarrollo de aplicaciones de Android de las que actualmente estoy ganando 40k-50k por mes?
- ¿De dónde obtienen los creadores de aplicaciones iOS sus efectos de sonido y sus obras de arte?
Agregue estas dependencias:
compile ‘com.facebook.android:facebook-android-sdk:4.0.1’
activity_main.xml:
<LinearLayout android: layout_width = "match_parent"
android: layout_height = “match_parent”
android: orientación = “vertical”
xmlns: android = “http://schemas.android.com/apk/res/android”>
<ImageView
android: layout_width = “100dp”
android: layout_height = “100dp”
android: id = “@ + id / iv_image”
android: layout_marginTop = “10dp”
android: layout_marginBottom = “10dp”
android: layout_gravity = “center_horizontal”
android: src = “@ drawable / profile” />
<LinearLayout
android: layout_width = “match_parent”
android: orientación = “horizontal”
android: layout_height = “wrap_content”>
<TextView
android: layout_width = “100dp”
android: layout_height = “40dp”
android: text = “Nombre”
android: gravity = “center_vertical”
android: textSize = “15dp”
android: textColor = “# 000000”
android: layout_marginLeft = “10dp”
android: layout_marginTop = “10dp” />
<TextView
android: layout_width = “wrap_content”
android: layout_height = “40dp”
android: text = “Nombre”
android: textSize = “15dp”
android: id = “@ + id / tv_name”
android: gravity = “center_vertical”
android: textColor = “# 000000”
android: layout_marginLeft = “10dp”
android: layout_marginTop = “10dp” />
<LinearLayout
android: layout_width = “match_parent”
android: layout_height = “wrap_content”
android: orientación = “horizontal”>
<TextView
android: layout_width = “100dp”
android: layout_height = “40dp”
android: text = “Correo electrónico”
android: gravity = “center_vertical”
android: textSize = “15dp”
android: layout_below = “@ + id / tv_name”
android: textColor = “# 000000”
android: layout_marginLeft = “10dp”
android: layout_marginTop = “10dp” />
<TextView
android: layout_width = “wrap_content”
android: layout_height = “40dp”
android: layout_below = “@ + id / tv_name”
android: text = “Correo electrónico”
android: gravity = “center_vertical”
android: textSize = “15dp”
android: id = “@ + id / tv_email”
android: textColor = “# 000000”
android: layout_marginLeft = “10dp”
android: layout_marginTop = “10dp” />
<LinearLayout
android: layout_width = “match_parent”
android: layout_height = “wrap_content”
android: orientación = “horizontal”>
<TextView
android: layout_width = “100dp”
android: layout_height = “40dp”
android: text = “DOB”
android: gravity = “center_vertical”
android: textSize = “15dp”
android: textColor = “# 000000”
android: layout_marginLeft = “10dp”
android: layout_marginTop = “10dp” />
<TextView
android: layout_width = “wrap_content”
android: layout_height = “40dp”
android: layout_below = “@ + id / tv_name”
android: text = “DOB”
android: gravity = “center_vertical”
android: textSize = “15dp”
android: id = “@ + id / tv_dob”
android: layout_toRightOf = “@ + id / tv_email”
android: textColor = “# 000000”
android: layout_marginLeft = “10dp”
android: layout_marginTop = “10dp” />
<LinearLayout
android: layout_width = “match_parent”
android: layout_height = “wrap_content”
android: orientación = “horizontal”>
<TextView
android: layout_width = “100dp”
android: layout_height = “40dp”
android: text = “Ubicación”
android: gravity = “center_vertical”
android: textSize = “15dp”
android: textColor = “# 000000”
android: layout_marginLeft = “10dp”
android: layout_marginTop = “10dp” />
<TextView
android: layout_width = “wrap_content”
android: layout_height = “40dp”
android: layout_below = “@ + id / tv_name”
android: text = “ubicación”
android: gravity = “center_vertical”
android: textSize = “15dp”
android: id = “@ + id / tv_location”
android: textColor = “# 000000”
android: layout_marginLeft = “10dp”
android: layout_marginTop = “10dp” />
<LinearLayout
android: layout_width = “match_parent”
android: background = “# 6585C8”
android: id = “@ + id / ll_facebook”
android: layout_marginLeft = “10dp”
android: layout_marginRight = “10dp”
android: layout_marginTop = “40dp”
android: layout_height = “50dp”>
<ImageView
android: layout_width = “50dp”
android: src = “@ drawable / facebook”
android: id = “@ + id / iv_facebook”
android: layout_height = “50dp” />
<TextView
android: layout_width = “wrap_content”
android: layout_height = “wrap_content”
android: text = “Iniciar sesión con Facebook”
android: textSize = “20dp”
android: textColor = “# FFFFFF”
android: textStyle = “bold”
android: id = “@ + id / tv_facebook”
android: layout_marginLeft = “20dp”
android: gravity = “center”
android: layout_gravity = “centro”
/>
MainActivity.java
paquete facebooklocation.facebooklocation;
importar android.content.Intent;
importar android.content.pm.PackageInfo;
importar android.content.pm.PackageManager;
importar android.content.pm.Signature;
importar android.support.v7.app.AppCompatActivity;
importar android.os.Bundle;
importar android.util.Base64;
importar android.util.Log;
importar android.view.View;
importar android.widget.ImageView;
importar android.widget.LinearLayout;
importar android.widget.TextView;
import com.bumptech.glide.Glide;
import com.facebook.AccessToken;
importar com.facebook.CallbackManager;
importar com.facebook.FacebookCallback;
import com.facebook.FacebookException;
importar com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.HttpMethod;
importar com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import org.json.JSONObject;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
clase pública MainActivity extiende AppCompatActivity implementa View.OnClickListener {
CallbackManager callbackManager;
ImageView iv_image, iv_facebook;
TextView tv_name, tv_email, tv_dob, tv_location, tv_facebook;
LinearLayout ll_facebook;
String str_facebookname, str_facebookemail, str_facebookid, str_birthday, str_location;
boolean boolean_login;
@Anular
vacío protegido onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
en eso();
getKeyHash ();
oyente();
}
init privado vacío () {
iv_image = (ImageView) findViewById (R.id.iv_image);
iv_facebook = (ImageView) findViewById (R.id.iv_facebook);
tv_name = (TextView) findViewById (R.id.tv_name);
tv_email = (TextView) findViewById (R.id.tv_email);
tv_dob = (TextView) findViewById (R.id.tv_dob);
tv_location = (TextView) findViewById (R.id.tv_location);
tv_facebook = (TextView) findViewById (R.id.tv_facebook);
ll_facebook = (LinearLayout) findViewById (R.id.ll_facebook);
FacebookSdk.sdkInitialize (this.getApplicationContext ());
}
oyente privado privado () {
tv_facebook.setOnClickListener (esto);
ll_facebook.setOnClickListener (esto);
iv_facebook.setOnClickListener (esto);
}
privado vacío facebookLogin () {
callbackManager = CallbackManager.Factory.create ();
LoginManager.getInstance (). RegisterCallback (callbackManager, nuevo FacebookCallback () {
@Anular
public void onSuccess (LoginResult loginResult) {
Log.e (“ONSUCCESS”, “ID de usuario:” + loginResult.getAccessToken (). GetUserId ()
+ “\ n” + “Token de autenticación:” + loginResult.getAccessToken (). getToken ()
);
Solicitud GraphRequest = GraphRequest.newMeRequest (loginResult.getAccessToken (),
nuevo GraphRequest.GraphJSONObjectCallback () {
@Anular
public void onCompleted (objeto JSONObject, respuesta GraphResponse) {
tratar {
boolean_login = true;
tv_facebook.setText (“Cerrar sesión de Facebook”);
Log.e (“objeto”, object.toString ());
str_facebookname = object.getString (“nombre”);
tratar {
str_facebookemail = object.getString (“correo electrónico”);
} catch (Excepción e) {
str_facebookemail = “”;
e.printStackTrace ();
}
tratar {
str_facebookid = object.getString (“id”);
} catch (Excepción e) {
str_facebookid = “”;
e.printStackTrace ();
}
tratar {
str_birthday = object.getString (“cumpleaños”);
} catch (Excepción e) {
str_birthday = “”;
e.printStackTrace ();
}
tratar {
JSONObject jsonobject_location = object.getJSONObject (“ubicación”);
str_location = jsonobject_location.getString (“nombre”);
} catch (Excepción e) {
str_location = “”;
e.printStackTrace ();
}
fn_profilepic ();
} catch (Excepción e) {
}
}
});
Parámetros del paquete = new Bundle ();
parámetros.putString (“campos”, “id, nombre, correo electrónico, sexo, cumpleaños, ubicación”);
request.setParameters (parámetros);
request.executeAsync ();
}
@Anular
public void onCancel () {
if (AccessToken.getCurrentAccessToken () == null) {
regreso; // ya desconectado
}
nueva GraphRequest (AccessToken.getCurrentAccessToken (), “/ me / permissions /”, null, HttpMethod.DELETE, nueva GraphRequest
.Llamar de vuelta() {
@Anular
public void onCompleted (GraphResponse graphResponse) {
LoginManager.getInstance (). LogOut ();
LoginManager.getInstance (). LogInWithReadPermissions (MainActivity.this, Arrays.asList (“public_profile, email”));
facebookLogin ();
}
}). executeAsync ();
}
@Anular
public void onError (FacebookException e) {
Log.e (“ON ERROR”, “Error al intentar iniciar sesión”);
AccessToken.setCurrentAccessToken (nulo);
LoginManager.getInstance (). LogInWithReadPermissions (MainActivity.this, Arrays.asList (“public_profile, email, user_birthday”));
}
});
}
@Anular
public void onActivityResult (int requestCode, int resultCode, Intent data) {
super.onActivityResult (requestCode, resultCode, data);
tratar {
callbackManager.onActivityResult (requestCode, resultCode, data);
} catch (Excepción e) {
}
}
privado vacío getKeyHash () {
// Agregar código para imprimir el hash de clave
tratar {
Información de PackageInfo = getPackageManager (). GetPackageInfo (“facebooklocation.facebooklocation”, PackageManager.GET_SIGNATURES);
para (Firma de firma: info.signatures) {
MessageDigest md = MessageDigest.getInstance (“SHA”);
md.update (signature.toByteArray ());
Log.d (“KeyHash:”, Base64.encodeToString (md.digest (), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
nulo privado fn_profilepic () {
Parámetros del paquete = nuevo paquete ();
params.putBoolean (“redirigir”, falso);
params.putString (“tipo”, “grande”);
nuevo GraphRequest (
AccessToken.getCurrentAccessToken (),
“yo / foto”,
params
HttpMethod.GET,
nuevo GraphRequest.Callback () {
public void onCompleted (respuesta GraphResponse) {
Log.e (“Respuesta 2”, respuesta + “”);
tratar {
String str_facebookimage = (String) response.getJSONObject (). GetJSONObject (“data”). Get (“url”);
Log.e (“Imagen”, str_facebookimage);
Glide.with (MainActivity.this) .load (str_facebookimage) .skipMemoryCache (true) .into (iv_image);
} catch (Excepción e) {
e.printStackTrace ();
}
tv_name.setText (str_facebookname);
tv_email.setText (str_facebookemail);
tv_dob.setText (str_birthday);
tv_location.setText (str_location);
}
}
) .executeAsync ();
}
@Anular
public void onClick (Ver vista) {
if (boolean_login) {
boolean_login = false;
LoginManager.getInstance (). LogOut ();
tv_location.setText (“”);
tv_dob.setText (“”);
tv_email.setText (“”);
tv_name.setText (“”);
Glide.with (MainActivity.this) .load (R.drawable.profile) .into (iv_image);
tv_facebook.setText (“Iniciar sesión con Facebook”);
} más {
LoginManager.getInstance (). LogInWithReadPermissions (MainActivity.this, Arrays.asList (“public_profile, email, user_birthday, user_location”));
facebookLogin ();
}
}
@Anular
nulo protegido en Destroy () {
super.onDestroy ();
LoginManager.getInstance (). LogOut ();
}
}
¡Gracias!