Zoeken…


Syntaxis

  • newInstance : om een exemplaar van Facebook- helperklasse te maken.
  • loginUser : Om gebruiker in te loggen.
  • signOut : om de gebruiker uit te loggen.
  • getCallbackManager : terugbellen voor Facebook.
  • getLoginCallback : terugbellen voor aanmelding.
  • getKeyHash : om Facebook Key Hash te genereren.

parameters

Parameter Details
LABEL Een tekenreeks die wordt gebruikt tijdens het loggen
FacebookSignInHelper Een statische verwijzing naar Facebook-helper
CallbackManager Een callback voor Facebook-bewerkingen
Werkzaamheid Een context
PERMISSION_LOGIN Een array met alle vereiste rechten van Facebook om in te loggen.
loginCallback Een callback voor Facebook-login

Hoe Facebook Login in Android toe te voegen

Voeg onderstaande afhankelijkheden toe aan uw build.gradle

  // Facebook login
    compile 'com.facebook.android:facebook-android-sdk:4.21.1'

Voeg onderstaande helper-klasse toe aan uw hulppakket:

/**
 * Created by Andy
 * An utility for Facebook
 */
public class FacebookSignInHelper {
    private static final String TAG = FacebookSignInHelper.class.getSimpleName();
    private static FacebookSignInHelper facebookSignInHelper = null;
    private CallbackManager callbackManager;
    private Activity mActivity;
    private static final Collection<String> PERMISSION_LOGIN = (Collection<String>) Arrays.asList("public_profile", "user_friends","email");
    private FacebookCallback<LoginResult> loginCallback;



    public static FacebookSignInHelper newInstance(Activity context) {
        if (facebookSignInHelper == null)
            facebookSignInHelper = new FacebookSignInHelper(context);
        return facebookSignInHelper;
    }


    public FacebookSignInHelper(Activity mActivity) {
        try {
            this.mActivity = mActivity;
            // Initialize the SDK before executing any other operations,
            // especially, if you're using Facebook UI elements.
            FacebookSdk.sdkInitialize(this.mActivity);
            callbackManager = CallbackManager.Factory.create();
            loginCallback = new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                   // You are logged into Facebook
                }

                @Override
                public void onCancel() {
                    Log.d(TAG, "Facebook: Cancelled by user");
                }

                @Override
                public void onError(FacebookException error) {
                    Log.d(TAG, "FacebookException: " + error.getMessage());
                }
            };
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * To login user on facebook without default Facebook button
     */
    public void loginUser() {
        try {
            LoginManager.getInstance().registerCallback(callbackManager, loginCallback);
            LoginManager.getInstance().logInWithReadPermissions(this.mActivity, PERMISSION_LOGIN);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    /**
     * To log out user from facebook
     */
    public void signOut() {
        // Facebook sign out
        LoginManager.getInstance().logOut();
    }

    public CallbackManager getCallbackManager() {
        return callbackManager;
    }

    public FacebookCallback<LoginResult> getLoginCallback() {
        return loginCallback;
    }

    /**
     * Attempts to log debug key hash for facebook
     *
     * @param context : A reference to context
     * @return : A facebook debug key hash
     */
    public static String getKeyHash(Context context) {
        String keyHash = null;
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(
                    context.getPackageName(),
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                keyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.d(TAG, "KeyHash:" + keyHash);
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return keyHash;
    }
}

Voeg onderstaande code toe aan uw activiteit:

FacebookSignInHelper facebookSignInHelper = FacebookSignInHelper.newInstance(LoginActivity.this, fireBaseAuthHelper);
facebookSignInHelper.loginUser();

Voeg onderstaande code toe aan uw OnActivityResult :

 facebookSignInHelper.getCallbackManager().onActivityResult(requestCode, resultCode, data);

Machtigingen instellen voor toegang tot gegevens vanuit het Facebook-profiel

Als u de details van het Facebook-profiel van een gebruiker wilt ophalen, moet u hiervoor machtigingen instellen:

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

loginButton.setReadPermissions(Arrays.asList("email", "user_about_me"));

Je kunt meer rechten toevoegen, zoals vriendenlijst, berichten, foto's enz. Kies gewoon de juiste machtiging en voeg deze toe aan de bovenstaande lijst.

Opmerking: u hoeft geen expliciete machtigingen in te stellen voor toegang tot het openbare profiel (voornaam, achternaam, id, geslacht, enz.).

Maak uw eigen aangepaste knop voor Facebook-login

Nadat u eerst de Facebook-aanmelding / -registratie hebt toegevoegd, ziet de knop er ongeveer zo uit:

voer hier de afbeeldingsbeschrijving in

Meestal komt het niet overeen met de ontwerpspecificaties van uw app. En hier is hoe u het kunt aanpassen:

<FrameLayout
    android:layout_below="@+id/no_network_bar"
    android:id="@+id/FrameLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone" />

    <Button
        android:background="#3B5998"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:id="@+id/fb"
        android:onClick="onClickFacebookButton"
        android:textAllCaps="false"
        android:text="Sign up with Facebook"
        android:textSize="22sp"
        android:textColor="#ffffff" />
</FrameLayout>

Wikkel gewoon de originele com.facebook.login.widget.LoginButton in een FrameLayout en maak de zichtbaarheid verdwenen.

Voeg vervolgens uw aangepaste knop toe aan dezelfde FrameLayout . Ik heb enkele voorbeeldspecificaties toegevoegd. U kunt altijd uw eigen tekenbare achtergrond maken voor de Facebook-knop en deze instellen als de achtergrond van de knop.

Het laatste wat we doen is eenvoudig de klik op mijn aangepaste knop omzetten in een klik op de facecbook-knop:

//The original Facebook button
LoginButton loginButton = (LoginButton)findViewById(R.id.login_button);

//Our custom Facebook button
fb = (Button) findViewById(R.id.fb);

public void onClickFacebookButton(View view) {
    if (view == fb) {
        loginButton.performClick();
    }
}

Super goed! Nu ziet de knop er ongeveer zo uit:

voer hier de afbeeldingsbeschrijving in

Een minimalistische gids voor Facebook login / signup implementatie

  1. U moet de vereisten instellen .

  2. Voeg de Facebook-activiteit toe aan het bestand AndroidManifest.xml :

    <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" />
    
  3. Voeg de inlogknop toe aan uw lay-out XML-bestand:

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />   
    
  4. Nu heb je de Facebook-knop. Als de gebruiker erop klikt, verschijnt het Facebook-aanmeldingsvenster bovenaan het scherm van de app. Hier kan de gebruiker zijn gegevens invoeren en op de knop Aanmelden klikken. Als de gegevens correct zijn, verleent het dialoogvenster de bijbehorende machtigingen en wordt een terugbelverzoek verzonden naar uw oorspronkelijke activiteit met de knop. De volgende code laat zien hoe u die terugbelopdracht kunt ontvangen:

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // Completed without error. You might want to use the retrieved data here.
        }
    
        @Override
        public void onCancel() {
            // The user either cancelled the Facebook login process or didn't authorize the app.
        }
    
        @Override
        public void onError(FacebookException exception) {
            // The dialog was closed with an error. The exception will help you recognize what exactly went wrong.
        }
    });  
    

Uitloggen bij Facebook

Facebook SDK 4.0 en hoger, zo loggen we uit:

com.facebook.login.LoginManager.getInstance().logOut();

Voor versies vóór 4.0 is het uitloggen verdwenen door het toegangstoken expliciet te wissen:

Session session = Session.getActiveSession();
session.closeAndClearTokenInformation();


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow