Как создать логин в Facebook с помощью приложения для Android?

Опубликовано: 5 Января, 2022

В этой статье объясняется, как создать приложение для Android с логином Facebook.

В приложениях Android можно использовать различные функции входа в социальные сети. Здесь мы изучим социальный вход с помощью Facebook , поэтому необходимо интегрировать Facebook SDK в проект, чтобы использовать вход в Facebook.

Ниже приведены различные шаги, как это сделать;

  1. Первое, что вам нужно сделать, это создать учетную запись разработчика Facebook, а затем создать новое приложение.

  2. Установите Android Studio (> = 3.0), а затем откройте / создайте проект, в который вы хотите добавить вход в Facebook.
  3. Добавьте в свой проект следующий код в Gradle Scripts -> build.gradle (Project).
    buildscript{
    repositories {
    jcenter()
    }
    }
  4. Теперь добавьте следующий код в Gradle Scripts -> build.gradle (Module: app) с последней версией Facebook Login SDK в свой проект.
    dependencies {
    implementation 'com.facebook.android:facebook-android-sdk:5.0.0'
    }
  5. Синхронизируйте свой проект
  6. Теперь откройте файл app -> res -> values -> strings.xml, чтобы добавить следующие строки и заменить [APP_ID] своим APP_ID, который вы можете получить из консоли разработчика Facebook.
    < string name = "facebook_app_id" >[APP_ID]</ string >
    < string name = "fb_login_protocol_scheme" >fb[APP_ID]</ string >

  7. Откройте файл app -> manifest -> AndroidManifest.xml и добавьте эту строку вне элемента приложения.
    < uses-permission android:name = "android.permission.INTERNET" />
  8. Добавьте этот элемент метаданных в элемент приложения в файле AndroidManifest.xml:
    < meta-data
    android:name = "com.facebook.sdk.ApplicationId"
    android:value = "@string/facebook_app_id" />
    < activity
    android:name = "com.facebook.FacebookActivity"
    android:configChanges="keyboard|keyboardHidden
    |screenLayout|screenSize
    |orientation"
    android:label = "@string/app_name" />
  9. Теперь первое, что вам потребуется, это Key Hash , поэтому добавьте эти строки в свой класс активности перед кодом входа в Facebook:
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super .onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    ... printHashKey();
    ...
    }
    ...
    public void
    printHashKey()
    {
    // Add code to print out the key hash
    try {
    PackageInfo info
    = getPackageManager().getPackageInfo(
    "com.android.facebookloginsample" ,
    PackageManager.GET_SIGNATURES);
    for (Signature signature : 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) {
    }
    }
  10. Теперь запустите приложение в эмуляторе или на подключенном устройстве. Вы увидите значение Key Hash, напечатанное в logcat, сохраните его для дальнейшего использования.
  11. Перейдите в консоль разработчиков Facebook и выберите « Настройки» -> «Основные» -> «Добавить платформу» (внизу страницы), и откроется всплывающее окно для выбора платформы . Выберите Android в качестве платформы.
  12. Добавьте название пакета вашего проекта в поле "Название пакета Google Play". Добавьте имя класса, в котором логин будет реализован в проекте, например «LoginActivity», а также добавьте значение хэша ключа в «Key Hashes» .

  13. Теперь вернемся в студию Android, добавьте эту настраиваемую кнопку в свой файл макета * .xml:
    < Button
    android:id = "@+id/button_facebook"
    style = "@style/FacebookLoginButton"
    android:layout_width = "match_parent"
    android:layout_height = "45dp"
    android:layout_gravity = "center_horizontal"
    android:layout_marginTop = "15dp"
    android:text = "Continue With Facebook"
    android:textAllCaps = "false"
    android:textColor = "@android:color/white" />
  14. Добавьте этот код в файл app -> res -> styles.xml:
    < style name = "FacebookLoginButton" >
    < item name = "android:textSize" >14sp</ item >
    < item name = "android:background" >@drawable/facebook_signin_btn</ item >
    < item name = "android:paddingTop" >11dp</ item >
    < item name = "android:paddingBottom" >11dp</ item >
    < item name = "android:paddingLeft" >15dp</ item >
    < item name = "android:layout_marginLeft" >3dp</ item >
    < item name = "android:layout_marginRight" >3dp</ item >
    < item name = "android:layout_height" >wrap_content</ item >
    < item name = "android:layout_gravity" >center_horizontal</ item >
    </ style >
  15. Вы можете настроить эту кнопку соответствующим образом или вместо указанной выше настраиваемой кнопки вы можете использовать кнопку Facebook по умолчанию также как Facebook LoginButton.
  16. Создайте файл с возможностью рисования с именем 'bg_button_facebook.xml' в приложении -> res -> папка с возможностью рисования и вставьте ниже код:
    <? xml version = "1.0" encoding = "utf-8" ?>
    < shape
    android:shape = "rectangle" >
    < corners android:radius = "5dp" />
    < solid android:color = "#3B5998" />
    </ shape >
  17. Теперь инициализируйте кнопку в файле * .java и код для инициализации Facebook SDK :
    // Declare variables
    private Button mButtonFacebook;
    private CallbackManager callbackManager;
    private LoginManager loginManager;
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super .onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    ...
    mButtonFacebook
    = findViewById(R.id.button_facebook);
    FacebookSdk.sdkInitialize(MainActivity. this );
    callbackManager = CallbackManager.Factory.create();
    facebookLogin();
    ...
    mButtonFacebook.setOnClickListener( new View.OnClickListener() {
    @Override
    public void onClick(View v)
    {
    loginManager.logInWithReadPermissions(
    MainActivity. this ,
    Arrays.asList(
    "email" ,
    "public_profile" ,
    "user_birthday" ));
    }
    });
    ...
    }
    ...
  18. Добавьте метод facebookLogin вне onCreate () в файл java. Это код для ответа на вход в Facebook.
    public void facebookLogin()
    {
    loginManager
    = LoginManager.getInstance();
    callbackManager
    = CallbackManager.Factory.create();
    loginManager
    .registerCallback(
    callbackManager,
    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)
    {
    if (object != null ) {
    try {
    String name = object.getString( "name" );
    String email = object.getString( "email" );
    String fbUserID = object.getString( "id" );
    disconnectFromFacebook();
    // do action after Facebook login success
    // or call your API
    }
    catch (JSONException | NullPointerException e) {
    e.printStackTrace();
    }
    }
    }
    });
    Bundle parameters = new Bundle();
    parameters.putString(
    "fields" ,
    "id, name, email, gender, birthday" );
    request.setParameters(parameters);
    request.executeAsync();
    }
    @Override
    public void onCancel()
    {
    Log.v( "LoginScreen" , "---onCancel" );
    }
    @Override
    public void onError(FacebookException error)
    {
    // here write code when get error
    Log.v( "LoginScreen" , "----onError: "
    + error.getMessage());
    }
    });
    }
  19. Теперь добавьте еще один необходимый метод «disconnectFromFacebook» для интеграции входа в систему, аналогично добавьте его вне onCreate. Это используется для отключения приложения от Facebook, так как нет необходимости оставаться на связи.
    public void disconnectFromFacebook()
    {
    if (AccessToken.getCurrentAccessToken() == null ) {
    return ; // already logged out
    }
    new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/me/permissions/" ,
    null ,
    HttpMethod.DELETE,
    new GraphRequest
    .Callback() {
    @Override
    public void onCompleted(GraphResponse graphResponse)
    {
    LoginManager.getInstance().logOut();
    }
    })
    .executeAsync();
    }
  20. Добавить метод «onActivityResult» вне OnCreate в той же деятельности:
    @Override
    protected void onActivityResult( int requestCode,
    int resultCode,
    Intent data)
    {
    // add this line
    callbackManager.onActivityResult(
    requestCode,
    resultCode,
    data);
    super .onActivityResult(requestCode,
    resultCode,
    data);
    }
  21. Теперь вы закончили кодирование. Запустите приложение на своем устройстве или в эмуляторе. Теперь вы можете войти в систему через Facebook также в своем приложении.
  22. Если вы хотите загрузить свое приложение в игровой магазин , вам необходимо включить «статус» в верхнем правом разделе на Facebook для разработчиков, для этого сначала добавьте URL-адрес политики конфиденциальности в настройках -> Базовый, как показано на скриншоте ниже. Теперь сохраните изменения и включите статус с панели управления.

Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .