tutorial public_profile onlogin ejemplo checkloginstate android facebook android-fragments android-studio facebook-sdk-4.0

public_profile - ¿Algún ejemplo que muestra cómo iniciar sesión usando Facebook SDK 4.0 en Android usando el botón propio o el botón de Facebook?



jquery facebook login (6)

¿Hay algún tutorial o ejemplo que muestre cómo iniciar sesión utilizando su propio botón usando Facebook SDK 4.0 en Android ? No estoy llegando a ningún lado y usar el sitio de desarrolladores de Facebook es difícil de entender. Como a continuación, cuando llamo al botón FBlogin , quiero verificar si el usuario no ha iniciado sesión o si está conectado. Quiero que el token de acceso obtenga información de perfil de Facebook y gustos del usuario

FBlogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Facebook login Code to get profile info and user likes } });

He intentado también loginButton Facebook.

<com.facebook.login.widget.LoginButton android:id="@+id/login_button" android:layout_width="244dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" android:layout_marginBottom="30dp" />

Pero muestra un error en xml: -

java.lang.NoClassDefFoundError: Could not initialize class com.facebook.login.widget.LoginButton at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:408) at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:413) at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:105) at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:176) at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:206) at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:131) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:739) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at android.view.LayoutInflater.rInflate(LayoutInflater.java:711) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:372) at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:369) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:326) at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350) at com.android.tools.idea.rendering.RenderService$5.compute(RenderService.java:708) at com.android.tools.idea.rendering.RenderService$5.compute(RenderService.java:697) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932) at com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:697) at com.android.tools.idea.rendering.RenderService.render(RenderService.java:816) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:646) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.java:82) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:589) at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178) at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212) at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.java:584) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) at com.intellij.util.Alarm$Request$1.run(Alarm.java:327) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

Mi clase de actividad: -

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_main);

¿Hay algún ejemplo / tutorial para iniciar sesión usando facebook sdk4.0? Estoy atrapado en ambos sentidos. Por favor ayuda.


Esto podría ayudarte

// Custom button private Button fbbutton; // Creating Facebook CallbackManager Value public static CallbackManager callbackmanager; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Initialize SDK before setContentView(Layout ID) FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_main); // Initialize layout button fbbutton = (Button) findViewById(R.id.button2); fbbutton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Call private method onFblogin(); } }); } // Private method to handle Facebook login and callback private void onFblogin() { callbackmanager = CallbackManager.Factory.create(); // Set permissions LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email","user_photos","public_profile")); LoginManager.getInstance().registerCallback(callbackmanager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { System.out.println("Success"); GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject json, GraphResponse response) { if (response.getError() != null) { // handle error System.out.println("ERROR"); } else { System.out.println("Success"); try { String jsonresult = String.valueOf(json); System.out.println("JSON Result"+jsonresult); String str_email = json.getString("email"); String str_id = json.getString("id"); String str_firstname = json.getString("first_name"); String str_lastname = json.getString("last_name"); } catch (JSONException e) { e.printStackTrace(); } } } }).executeAsync(); } @Override public void onCancel() { Log.d(TAG_CANCEL,"On cancel"); } @Override public void onError(FacebookException error) { Log.d(TAG_ERROR,error.toString()); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackmanager.onActivityResult(requestCode, resultCode, data); }

En manifiesto agregar siguiente,

<application android:allowBackup="true" android:icon="@drawable/app_icon" android:label="@string/app_name" android:theme="@style/AppTheme" > . . <!-- [START Facebook] --> <activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" /> <!-- [END Facebook] --> . . </application>


La mejor solución es iniciar sesión usando LoginManager. Así es como logré esto (al hacer clic con ButterKnife):

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mCallbackManager = CallbackManager.Factory.create(); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); LoginManager.getInstance().registerCallback(mCallbackManager, this); } @OnClick(R.id.facebook_login_button) @SuppressWarnings("unused") public void loginWithFacebookAccount() { LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "email")); } @Override public void onSuccess(LoginResult loginResult) { Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,last_name,link,email,picture"); GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), (jsonObject, graphResponse) -> { String id = null; if (jsonObject != null) { try { id = jsonObject.getString("id"); } catch (JSONException e) { e.printStackTrace(); } } }); request.setParameters(parameters); request.executeAsync(); } @Override public void onCancel() { } @Override public void onError(FacebookException e) { } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { mCallbackManager.onActivityResult(requestCode, resultCode, data); } }

Así que así es como lo hice. Siéntete libre de preguntar ;)


Para Facebook SDK versión 4.X, en su actividad o fragmento (generalmente en el método onCreate ()):

// Initialize Facebook Sdk before UI FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions("user_friends"); // Callback registration loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Log.v(TAG, "fblogin onSuccess"); } @Override public void onCancel() { // App code Log.v(TAG, "fblogin onCancel"); } @Override public void onError(FacebookException exception) { // App code Log.v(TAG, "fblogin onError"); } });

Y también no te olvides de pasar el resultado de la actividad de Facebook al gerente:

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


Uso de Android Facebook SDK 4.X Inicio de sesión con faceboook Default Login_button

public class FbDefaultBtnLogin extends AppCompatActivity { private CallbackManager callbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_fb_default_btn_login); callbackManager = CallbackManager.Factory.create(); // LoginButton loginButton=(LoginButton)findViewById(R.id.login_button); LoginManager.getInstance().logInWithReadPermissions(this,Arrays.asList("email","user_photos","public_profile")); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { } @Override public void onCancel() { } @Override public void onError(FacebookException e) { } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); } <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.jitendra.facebooklogin.FbDefaultBtnLogin"> <!--<com.facebook.login.widget.LoginButton--> <!--android:id="@+id/login_button"--> <!--android:layout_width="wrap_content"--> <!--android:layout_height="wrap_content"--> <!--android:layout_gravity="center_horizontal"--> <!--android:layout_marginTop="30dp"--> <!--android:layout_marginBottom="30dp" /> </RelativeLayout>

En Mainifest: -

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id" /> <activity android:name="com.facebook.FacebookActivity" android:theme="@style/AppTheme" > </activity>


hola mira este tutorial: haz clic aquí

En este tutorial puede obtener el último ejemplo de SDK de Facebook con inicio de sesión personalizado y lógica de botón de desconexión.


public class AuthWFacebookSDKFour extends Activity implements View.OnClickListener,FacebookCallback<LoginResult> { List<String> permissionNeeds=Arrays.asList("user_photos","friends_photos", "email", "user_birthday", "user_friends"); //facebook callbacks manager private CallbackManager cm; private LoginButton mFbLoginButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //init facebook sdk and FacebookSdk.sdkInitialize(getApplicationContext()); //instantiate callbacks manager mCallbackManager = CallbackManager.Factory.create(); mFbLoginButton=(LoginButton)findViewById(R.id.FBBUTTONID); //set permissions mFbLoginButton.setReadPermissions(ApplicationContext.facebookPermissions); // register callback //means hey facebook after login call onActivityResult of **this** mFbLoginButton.registerCallback(mCallbackManager, this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //manage login result mCallbackManager.onActivityResult(requestCode, resultCode, data); } @Override public void onSuccess(LoginResult loginResults) { //login ok get access token AccessToken.getActiveAccessToken(); } @Override public void onCancel() { Log.e(TAG(),"facebook login canceled"); } @Override public void onError(FacebookException e) { Log.e(TAG(),"facebook login failed error"); } }

recuerda insertar en manifiesto

<activity android:name="com.facebook.FacebookActivity" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar" />