Necesito la dirección de correo electrónico del usuario después de un inicio de sesión con éxito en facebook en android con SDK 4.0
He integrado más reciente de Facebook android sdk 4.0. En SDK 3.0+, la dirección de correo electrónico del usuario se recupera utilizando user.getProperty ("correo electrónico") después del inicio de sesión correcto. Estoy buscando el comando correspondiente en Facebook Android sdk 4.0 Referencia Enlaces:
Https://developers.facebook.com/docs/facebook-login/android/v2.3#overview https://developers.facebook.com/docs/android/upgrading-4.x
- Error al importar com.google.android.gms. *;
- No se pudo encontrar la clase android.support.v4.app.NotificationCompat $ Builder
- Administrador de SDK de Android El par de SSL se ha cerrado incorrectamente
- ¿Por qué no puedo instalar Google Cloud Messaging para Android Library?
- Ejecución del nuevo emulador de Intel para Android
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getActivity().getApplicationContext()); callbackManager = CallbackManager.Factory.create(); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); loginButton = (LoginButton) view.findViewById(R.id.login_button); loginButton.setReadPermissions("email", "user_likes", "user_friends"); loginButton.setFragment(this); setFacebookLoginText(loginButton); // Other app specific specialization // Callback registration loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { AccessToken accessToken = loginResult.getAccessToken(); GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject user, GraphResponse graphResponse) { //Need User email address after login success. } }).executeAsync(); } @Override public void onCancel() { Toast.makeText(getActivity(), "fail", Toast.LENGTH_SHORT).show(); } @Override public void onError(FacebookException exception) { Toast.makeText(getActivity(), "error", Toast.LENGTH_SHORT).show(); } }); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_facebook_login, container, false); return view; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); }
- Android Studio: la aplicación no está instalada en el teléfono, pero se ejecuta
- Plugin de Gradle de Android-Herramientas
- SDK de LinkedIn para Android genera fichas de acceso no utilizables
- ¿Por qué dice "obsoleto" para un método cuando es el único que puedo usar para el nivel de API seleccionado?
- Compilación de Android Only con API 20: Android 4.4 (KitKat Wear)
- ¿Por qué algunas API de Android no aparecen en la pestaña de destino de AVD Manager?
- SDK de Android: ejecuta funciones en segundo plano
- No se puede instalar SDK Platform 4.0.3
Sí funcionó. La única cosa requerida era cambiar GraphRequest a GraphRequestAsyncTask en el método onSuccess de FacebookCallBack, y entonces los detalles del usuario podrían ser fácilmente extraídos del JSONObject.
@Override public void onSuccess(LoginResult loginResult) { final AccessToken accessToken = loginResult.getAccessToken(); final FBUser fbUser = new FBUser(); GraphRequestAsyncTask request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject user, GraphResponse graphResponse) { fbUser.setEmail(user.optString("email")); fbUser.setName(user.optString("name")); fbUser.setId(user.optString("id")); } }).executeAsync(); }
En el nuevo gráfico de facebook necesitas pedir permisos para acceder a esa información. Por ejemplo en la actividad que usted ha puesto el LoginButton usted agrega esta línea en el método de OnCreate
loginButtonFacebook.setReadPermissions(Arrays.asList("public_profile", "email", "user_birthday"));
Entonces usted consigue esa información
loginButtonFacebook.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject me, GraphResponse response) { if (response.getError() != null) { // handle error } else { String email = me.optString("email"); } } }).executeAsync(); }
Esto le dará toda la información de facebook sdk 4.0.0
FbloginButton.setReadPermissions ("correo electrónico");
fbloginButton.registerCallback(callbackmanager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { AccessToken accessToken = loginResult.getAccessToken(); GraphRequest graphRequest=GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject object, GraphResponse response) { if (response.getError()!=null) { Log.e(TAG,"Error in Response "+ response); } else { email=object.optString("email"); Log.e(TAG,"Json Object Data "+object+" Email id "+ email); } } }); Bundle bundle=new Bundle(); bundle.putString("fields","id,email,name"); graphRequest.setParameters(bundle); graphRequest.executeAsync(); }
Aparte de eso, pruebe si tiene permiso, de lo contrario pida a sus usuarios de nuevo:
AccessToken accessToken=AccessToken.getCurrentAccessToken(); if (accessToken.getPermissions().contains("email")) { } else { }
- Android- simple fade out y fade in animación para viewflipper
- Android found tag … donde se espera el artículo