खोज…


वाक्य - विन्यास

  • newInstance : फेसबुक सहायक वर्ग का एकल उदाहरण बनाने के लिए।
  • loginUser : उपयोगकर्ता को लॉगिन करने के लिए।
  • साइनऑउट : उपयोगकर्ता को लॉग आउट करने के लिए।
  • getCallbackManager : फेसबुक के लिए कॉलबैक पाने के लिए।
  • getLoginCallback : लॉगिन के लिए कॉलबैक पाने के लिए।
  • getKeyHash : फेसबुक की हैश उत्पन्न करने के लिए।

पैरामीटर

पैरामीटर विवरण
टैग लॉगिंग करते समय एक स्ट्रिंग का उपयोग किया जाता है
FacebookSignInHelper फेसबुक हेल्पर के लिए एक स्थिर संदर्भ
CallbackManager फेसबुक संचालन के लिए एक कॉलबैक
गतिविधि एक प्रसंग
PERMISSION_LOGIN एक सरणी जिसमें लॉगिन करने के लिए फेसबुक से आवश्यक सभी अनुमति हैं।
loginCallback फेसबुक लॉगिन के लिए एक कॉलबैक

एंड्रॉइड में फेसबुक लॉगिन कैसे जोड़ें

अपने build.gradle निर्भरता नीचे जोड़ें

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

अपने उपयोगिता पैकेज में सहायक श्रेणी के नीचे जोड़ें:

/**
 * 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;
    }
}

अपनी गतिविधि में नीचे कोड जोड़ें:

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

नीचे दिए गए कोड को अपने OnActivityResult जोड़ें:

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

फेसबुक प्रोफाइल से डेटा एक्सेस करने के लिए परमिशन सेट करना

यदि आप किसी उपयोगकर्ता की फेसबुक प्रोफ़ाइल का विवरण प्राप्त करना चाहते हैं, तो आपको उसी के लिए अनुमतियां सेट करने की आवश्यकता है:

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

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

आप मित्र-सूची, पोस्ट, फ़ोटो आदि जैसी अधिक अनुमतियां जोड़ सकते हैं। बस सही अनुमति चुनें और इसे उपरोक्त सूची में जोड़ें।

नोट: आपको सार्वजनिक प्रोफ़ाइल (पहला नाम, अंतिम नाम, आईडी, लिंग आदि) तक पहुँचने के लिए कोई स्पष्ट अनुमति देने की आवश्यकता नहीं है।

फेसबुक लॉगिन के लिए अपना खुद का कस्टम बटन बनाएं

एक बार जब आप पहली बार फेसबुक लॉगिन / साइनअप जोड़ते हैं, तो बटन कुछ इस तरह दिखता है:

यहाँ छवि विवरण दर्ज करें

अधिकांश समय, यह आपके ऐप के डिज़ाइन-स्पेक्स से मेल नहीं खाता। और यहां बताया गया है कि आप इसे कैसे कस्टमाइज़ कर सकते हैं:

<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>

बस मूल लपेट com.facebook.login.widget.LoginButton एक में FrameLayout और उसकी दृश्यता चला सकते हैं।

इसके बाद, अपने कस्टम बटन को उसी FrameLayout में जोड़ें। मैंने कुछ सैंपल स्पेक्स जोड़े हैं। आप हमेशा फेसबुक बटन के लिए अपनी खुद की ड्रॉएबल पृष्ठभूमि बना सकते हैं और इसे बटन की पृष्ठभूमि के रूप में सेट कर सकते हैं।

अंतिम चीज़ जो हम करते हैं, वह है बस मेरे कस्टम बटन पर क्लिक को फेसबुक बटन पर एक क्लिक में बदलना:

//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();
    }
}

महान! अब बटन कुछ इस तरह दिखता है:

यहाँ छवि विवरण दर्ज करें

फेसबुक लॉगिन / साइनअप कार्यान्वयन के लिए एक न्यूनतम गाइड

  1. आपको आवश्यक शर्तें सेटअप करनी होंगी

  2. 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. अपने लेआउट XML फ़ाइल में लॉगिन बटन जोड़ें:

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />   
    
  4. अब आपके पास फेसबुक बटन है। यदि उपयोगकर्ता इस पर क्लिक करता है, तो फेसबुक लॉगिन डायलॉग एप की स्क्रीन के ऊपर आएगा। यहां उपयोगकर्ता अपनी साख भर सकते हैं और लॉग इन बटन दबा सकते हैं। यदि क्रेडेंशियल सही हैं, तो संवाद संबंधित अनुमतियों को अनुदान देता है और आपकी मूल गतिविधि पर कॉलबैक भेजा जाता है जिसमें बटन होता है। निम्न कोड दिखाता है कि आप उस कॉलबैक को कैसे प्राप्त कर सकते हैं:

    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.
        }
    });  
    

फेसबुक से लॉग आउट करना

फेसबुक एसडीके 4.0 आगे, यह है कि हम कैसे लॉगआउट करते हैं:

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

4.0 से पहले के संस्करणों के लिए, लॉग आउट आउट टोकन को स्पष्ट रूप से साफ़ करके चला गया है:

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


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow