tutorial - login con facebook android studio




usando facebook sdk en un estudio Android (8)

* Gradle Repository para el SDK de Facebook.

dependencies {
    compile 'com.facebook.android:facebook-android-sdk:4.4.0'
}

search.maven.org/…

Estoy siguiendo Facebook SDK para Android usando Android Studio . Cuando ejecuto mi aplicación recibo la advertencia mencionada a continuación.

Gradle: module 'facebook' won't be compiled. Unfortunately you can't have non-Gradle Java module and Android-Gradle module in one project.

¿Cómo debería resolver esto?

Intenté la respuesta de @Scott Barta y recibí el siguiente mensaje de error.

    A problem occurred configuring project ':App'.
> Failed to notify project evaluation listener.
   > A problem occurred configuring project ':libraries:facebook'.
      > Failed to notify project evaluation listener.
         > Could not resolve all dependencies for configuration ':libraries:facebook:_DebugCompile'.
            > Could not find any version that matches com.android.support:support-v4:+.
              Required by:
                  MyApplication2.libraries:facebook:unspecified

Arreglé el

"No se pudo encontrar la propiedad 'ANDROID_BUILD_SDK_VERSION' en el proyecto ': Facebook'."

error en el archivo build.gradle , agregando en gradle.properties los valores:

ANDROID_BUILD_TARGET_SDK_VERSION=21<br>
ANDROID_BUILD_MIN_SDK_VERSION=15<br>
ANDROID_BUILD_TOOLS_VERSION=21.1.2<br>
ANDROID_BUILD_SDK_VERSION=21<br>

Fuente: https://.com/a/21490651/2161698


Cuando use git, puede incorporar el más nuevo facebook-android-sdk con facilidad.

  • Agregue facebook-android-sdk como submódulo: git submodule add https://github.com/facebook/facebook-android-sdk.git
  • Agregue sdk como proyecto de gradle: edite settings.gradle y agregue line: include ':facebook-android-sdk:facebook'
  • Agregue sdk como dependencia al módulo: edite build.gradle y agregue dentro del bloque de dependencias: compile project(':facebook-android-sdk:facebook')

Facebook ha agregado el SDK a los repositorios de Maven Central. Para configurar su proyecto utilizando la instancia de maven repo, tendrá que hacer dos cosas:

  1. En el archivo de build.gradle de primer nivel de su proyecto, agregue los repositorios de Maven Central. El mío se ve así:

    repositories {
        jcenter()       // This is the default repo
        mavenCentral()  //  This is the Maven Central repo
    }
    
  2. En el archivo build.grade de nivel de aplicación , agregue la dependencia de sdk de Facebook:

    dependencies {
    
        compile 'com.facebook.android:facebook-android-sdk:4.5.0' // Adjust the version accordingly
        // All your other dependencies.
    }
    

También puede ajustar la versión específica de Facebook SDK. Para obtener una lista de las versiones disponibles en el repositorio de maven, haga clic en este enlace.


He usado facebook sdk 4.10.0 para integrar el inicio de sesión en mi aplicación de Android. El tutorial que seguí es:

facebook login android studio

Podrás obtener el nombre, apellido, correo electrónico, sexo, identificación de Facebook y fecha de nacimiento de facebbok.

El tutorial anterior también explica cómo crear una aplicación en la consola de desarrollador de Facebook a través de video.

agregue a continuación en el build.gradle(Module:app) :

repositories {
        mavenCentral()
    }

y

 compile 'com.facebook.android:facebook-android-sdk:4.10.0'

ahora agregue a continuación en el archivo AndroidManifest.xml:

 <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="your app id from facebook developer console"/>

     <activity android:name="com.facebook.FacebookActivity"
               android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
               android:theme="@android:style/Theme.Translucent.NoTitleBar"
               android:label="@string/app_name" />

agregue siguiente en el archivo activity_main.xml:

<LinearLayout 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"
    android:orientation="vertical"
    tools:context="com.demonuts.fblogin.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000"
        android:layout_marginLeft="10dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/text"/>

    <com.facebook.login.widget.LoginButton
        android:id="@+id/btnfb"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

Y, por último, agregue a continuación en el archivo MainActivity.java:

import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.widget.TextView;

import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.Profile;
import com.facebook.ProfileTracker;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

import org.json.JSONException;
import org.json.JSONObject;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;


public class MainActivity extends AppCompatActivity {

    private TextView tvdetails;
    private CallbackManager callbackManager;
    private AccessTokenTracker accessTokenTracker;
    private ProfileTracker profileTracker;
    private LoginButton loginButton;
    private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject object, GraphResponse response) {
                            Log.v("LoginActivity", response.toString());

                            // Application code
                            try {
                                Log.d("tttttt",object.getString("id"));
                                String birthday="";
                                if(object.has("birthday")){
                                    birthday = object.getString("birthday"); // 01/31/1980 format
                                }

                                String fnm = object.getString("first_name");
                                String lnm = object.getString("last_name");
                                String mail = object.getString("email");
                                String gender = object.getString("gender");
                                String fid = object.getString("id");
                                tvdetails.setText(fnm+" "+lnm+" \n"+mail+" \n"+gender+" \n"+fid+" \n"+birthday);

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id, first_name, last_name, email, gender, birthday, location");
            request.setParameters(parameters);
            request.executeAsync();

        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException error) {

        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FacebookSdk.sdkInitialize(this);
        setContentView(R.layout.activity_main);

        tvdetails = (TextView) findViewById(R.id.text);

        loginButton = (LoginButton) findViewById(R.id.btnfb);

        callbackManager = CallbackManager.Factory.create();

        accessTokenTracker= new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) {

            }
        };

        profileTracker = new ProfileTracker() {
            @Override
            protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) {

            }
        };

        accessTokenTracker.startTracking();
        profileTracker.startTracking();
        loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_birthday", "user_friends"));
        loginButton.registerCallback(callbackManager, callback);

    }

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

    }

    @Override
    public void onStop() {
        super.onStop();
        accessTokenTracker.stopTracking();
        profileTracker.stopTracking();
    }

    @Override
    public void onResume() {
        super.onResume();
        Profile profile = Profile.getCurrentProfile();

    }

}

Implementé Facebook Android SDK en el repositorio de Sonatype.

Puede incluir esta biblioteca como dependencia de Gradle:

repositories {
    maven {
        url 'https://oss.sonatype.org/content/groups/public'
    }
}

dependencies {
    compile 'com.shamanland:facebook-android-sdk:3.15.0-SNAPSHOT'
}

Publicación original here .


Las personas que usan Android Studio 0.8.6 pueden hacer esto:

  1. Descargue Facebook-android-sdk-xxx.zip y descomprímalo
  2. Copie SOLO el directorio de Facebook en el directorio de Facebook-android-sdk-xxx en su proyecto junto con la aplicación /

    • ImAnApp /
      • | - app /
      • | - construir /
      • | - facebook /
  3. Ahora debería ver Android Studio mostrando Facebook como módulo

  4. Modifica build.gradle of facebook en esto.
    • archivos proporcionados ('../ libs / bolts.jar') a los provided files('./libs/bolts.jar')
    • compileSdkVersion Integer.parseInt (project.ANDROID_BUILD_SDK_VERSION) compileSdkVersion 20 u otra versión que haya definido en la aplicación
    • buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION para buildToolsVersion '20.0.0'
    • minSdkVersion Integer.parseInt (project.ANDROID_BUILD_MIN_SDK_VERSION) a minSdkVersion 14
    • targetSdkVersion Integer.parseInt (project.ANDROID_BUILD_TARGET_SDK_VERSION) a targetSdkVersion 20
    apply plugin: 'android-library'

    dependencies {
        compile 'com.android.support:support-v4:19.1.+'
        provided files('./libs/bolts.jar')
    }

    android {
        compileSdkVersion 20
        buildToolsVersion '20.0.0'

        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 20
        }

        lintOptions {
            abortOnError false
        }

        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                res.srcDirs = ['res']
            }
        }
    }

Resincroniza tu archivo gradle y debería funcionar bien.


usar facebook sdk en android studio es bastante simple, simplemente agregue la siguiente línea en su gradle

  compile 'com.facebook.android:facebook-android-sdk:[4,5)'

y asegúrese de haber actualizado el repositorio de soporte de Android; si no, actualícelo con el gestor sdk autónomo





android-gradle