Android फेसबुक लॉगिन बटन को अनुकूलित करें


79

मैं Facebook लॉगिन बटन को अनुकूलित करना चाहता हूं जो हमें एंड्रॉइड (फेसबुक-एंड्रॉइड-एसडीके-3.0.1) के लिए फेसबुक एसडीके के साथ मिलता है। मैं एक साधारण एंड्रॉइड बटन चाहता हूं जिसका शीर्षक "फेसबुक के माध्यम से लॉगिन" है। मुझे इसके बारे में कोई दस्तावेज नहीं मिला।

इसलिए यदि कोई इसे सरल तरीके से करना जानता है, तो कृपया मुझे बताएं या मुझे निर्देश दें कि यह कैसे करना है।


1
मैंने कभी भी फेसबुक एसडीके का उपयोग नहीं किया है ... लेकिन अगर उनकी एक छवि फ़ाइल है जिसे लॉगिन बटन के साथ
जोड़ा

यह सिर्फ एक छवि फ़ाइल से संबंधित बटन नहीं है। इसके उदाहरण के लिए इसके साथ बहुत सी कार्यक्षमता जुड़ी हुई है: यह अपने पाठ को बदलता है जैसे कि उपयोगकर्ता के लॉग इन के आधार पर उपयोगकर्ता लॉग इन होता है या नहीं
डोरा

जवाबों:


83

आप इस तरह से modifiy लॉगिन बटन के लिए शैलियों का उपयोग कर सकते हैं

<style name="FacebookLoginButton">
    <item name="android:textSize">@dimen/smallTxtSize</item>
    <item name="android:background">@drawable/facebook_signin_btn</item>
    <item name="android:layout_marginTop">10dp</item>
    <item name="android:layout_marginBottom">10dp</item>
    <item name="android:layout_gravity">center_horizontal</item>
</style>

और लेआउट में

<com.facebook.widget.LoginButton
        xmlns:fb="http://schemas.android.com/apk/res-auto"
        android:id="@+id/loginFacebookButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        fb:login_text="@string/loginFacebookButton"
        fb:logout_text=""
        style="@style/FacebookLoginButton"/>

हाय @ फ़िलश, क्या इन संपत्तियों के बारे में कोई आधिकारिक दस्तावेज है? मुझे नहीं मिला।
जॉर्ज ई। हर्नांडेज़

16
यह अब काम नहीं करता है। निर्माण के दौरान ग्रेड एक त्रुटि के साथ रुकता है। LoginManager और एक मानक बटन का उपयोग करें।
कैसियो लैंडिम

यह एक सही है। महान
VVB

168

बिना उपयोग किए पूरी तरह से कस्टम फेसबुक लॉगिन बटन रखने के लिए com.facebook.widget.LoginButton

फेसबुक के अनुसार एसडीके 4.x,

फेसबुक से लॉगिन की नई अवधारणा

LoginManager और AccessToken - ये नई कक्षाएं फेसबुक लॉग इन करती हैं

तो, अब आप फेसबुक लॉगिन बटन के बिना फेसबुक प्रमाणीकरण का उपयोग कर सकते हैं

लेआउट .xml

    <Button
            android:id="@+id/btn_fb_login"
            .../>

MainActivity.java

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

        FacebookSdk.sdkInitialize(this.getApplicationContext());

        callbackManager = CallbackManager.Factory.create();

        LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        Log.d("Success", "Login");

                    }

                    @Override
                    public void onCancel() {
                        Toast.makeText(MainActivity.this, "Login Cancel", Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onError(FacebookException exception) {
                        Toast.makeText(MainActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show();
                    }
                });

        setContentView(R.layout.activity_main);

        Button btn_fb_login = (Button)findViewById(R.id.btn_fb_login);

        btn_fb_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                  LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "user_friends"));
            }
        });

    }

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

    callbackManager.onActivityResult(requestCode, resultCode, data); 
}

6
त्रुटि: logInWithReadPims (यह, Arrays.asList ("public_profile", "user_friends")); प्रतीक का समाधान नहीं कर सकते
शक्तिसिंह जडेजा

1
TejaDroid अच्छा जवाब, imho आपको सबसे अच्छा जवाब देने के लिए onActivityResult जोड़ना चाहिए। :)
इलारियो जूल

1
एक आकर्षण +1 की तरह काम करें
अर्पित पटेल

3
@ShaktisinhJadeja यह OnClickListener संदर्भ को संदर्भित करता है। logInWithReadPians को पहले पैरामीटर के रूप में एक गतिविधि या टुकड़े की आवश्यकता होती है। इसके बजाय YourActivityName.this या YourFragmentName.this लगाएं।
क्रुबियो

1
यह उत्तर ठीक काम कर रहा है। क्या कोई मुझे बता सकता है कि लॉगिन करने के बाद एंड्रॉइड ऐप में फेसबुक से लॉगआउट कैसे करें?
BABU K

36

मुझे ऐसा करने का सबसे अच्छा तरीका है, अगर आप बटन को पूरी तरह से कस्टमाइज़ करना चाहते हैं, तो एक बटन बनाना है, या कोई भी दृश्य जो आप चाहते हैं (मेरे मामले में यह एक था LinearLayout) और OnClickListenerउस दृश्य को सेट करें, और निम्नलिखित को कॉल करें घटना पर क्लिक करें:

com.facebook.login.widget.LoginButton btn = new LoginButton(this);
btn.performClick();

2
यह काम करता हैं। लेकिन अनावश्यक। फेसबुक लॉगिन बटन का उपयोग करने और इसके क्लिक को नकली करने की कोई आवश्यकता नहीं है। इसके बजाय LoginManager का उपयोग करें।
विटर ह्यूगो श्वाब

1
Vitor सही है, अपने स्वयं के बटन को अनुकूलित करने और लॉगिन प्रबंधक का उपयोग करने में बहुत आसान है
जोनाथन डन

16

आप इस तरह लॉगिन बटन को मोडिफाई कर सकते हैं

<com.facebook.widget.LoginButton
            xmlns:fb="http://schemas.android.com/apk/res-auto"
            android:id="@+id/login_button"
            android:layout_width="249dp"
            android:layout_height="45dp"
            android:layout_above="@+id/textView1"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center_horizontal"
            android:layout_marginBottom="30dp"
            android:layout_marginTop="30dp"
            android:contentDescription="@string/login_desc"
            android:scaleType="centerInside"
            fb:login_text=""
            fb:logout_text="" />

और कोड में मैंने पृष्ठभूमि संसाधन को परिभाषित किया:

final LoginButton button = (LoginButton) findViewById(R.id.login_button);
button.setBackgroundResource(R.drawable.facebook);

1
अरे @RINK, fb:login_textऔर fb:logout_textचलाने की कोशिश करते समय एक त्रुटि फेंक दें। यहाँ त्रुटि है: Error parsing XML: unbound prefix। क्या आप सुनिश्चित हैं कि उचित वाक्यविन्यास है?
toobsco42

1
स्पष्ट रूप से देर हो चुकी है, लेकिन @ toobsco42 - सुनिश्चित करें कि आपके पास xmlns है: fb डिफाइंड ( स्कीमास.एंड्रॉइड.com/apk/res-auto ), या तो बटन में जैसा कि यहां दिखाया गया है, या आपके लेआउट फ़ाइल के शीर्ष स्तर पर।
एरिक ब्रायनवॉल्ड

3
facebook SDK 3.0 या उसके ऊपर का facebook: login_text = "" facebook: logout_text = ""
धवल परमार

1
@ यह भी लिखें, फिर आपको यह त्रुटि नहीं मिलेगी xmlns: fb = " schemas.android.com/apk/res-auto "
Yawar

Button.setCompoundDrawablesWithIntrinsicBounds (0,0,0,0); , यह भी लिंक
Yawar

15
  1. कस्टम फेसबुक बटन बनाएं और देशी फेसबुक बटन पर दृश्यता बदलें:

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
        <Button
                android:id="@+id/facebookView"
                android:layout_width="300dp"
                android:layout_height="48dp"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="12dp"
                android:background="@drawable/btn_frame"
                android:gravity="center"
                android:text="@string/Sign_in_facebook_button"
                android:textColor="@color/colorAccent" />
    
        <com.facebook.login.widget.LoginButton
                android:id="@+id/facebookButton"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:visibility="invisible"
                android:layout_marginBottom="12dp" />
    
     </LinearLayout>
    
  2. श्रोता को अपने नकली बटन में जोड़ें और क्लिक करें अनुकरण करें:

    facebookView.setOnClickListener(this);
    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.facebookView){
           facebookButton.performClick();
        }
    }
    

यह सबसे अच्छा है। एक सही जवाब।
पाकीज

9

नए फेसबुक एसडीके में, लॉगिन और लॉगआउट टेक्स्ट नाम है:

 <com.facebook.login.widget.LoginButton
 xmlns:facebook="http://schemas.android.com/apk/res-auto"
 facebook:com_facebook_login_text=""
 facebook:com_facebook_logout_text=""/>

1
यह काम करता है, आपने कैसे पता लगाया? SDK कोड में खुदाई?
हसन तारीक

5
//call Facebook onclick on your customized button on click by the following

FacebookSdk.sdkInitialize(this.getApplicationContext());

        callbackManager = CallbackManager.Factory.create();

        LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        Log.d("Success", "Login");

                    }

                    @Override
                    public void onCancel() {
                        Toast.makeText(MainActivity.this, "Login Cancel", Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onError(FacebookException exception) {
                        Toast.makeText(MainActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show();
                    }
                });

        setContentView(R.layout.activity_main);

        Button mycustomizeedbutton=(Button)findViewById(R.id.mycustomizeedbutton);

        mycustomizeedbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                  LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));
            }
        });

    }

2
 <com.facebook.widget.LoginButton
            android:id="@+id/login_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            facebook:confirm_logout="false"
            facebook:fetch_user_info="true"
            android:text="testing 123"
            facebook:login_text=""
            facebook:logout_text=""
            />

इसने मेरे लिए काम किया। फेसबुक लॉगिन बटन टेक्स्ट को बदलने के लिए।


1

अनुकूलित करें। Com.facebook.widget.LoginButton

चरण: 1 एक तामचीनी बनाना

चरण: 2 सेट करने के लिए com.facebook.widget.LoginButton

चरण: 3 अनुकूलन के साथ Textview सेट करने के लिए ।

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <com.facebook.widget.LoginButton
        android:id="@+id/fbLogin"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:contentDescription="@string/app_name"
        facebook:confirm_logout="false"
        facebook:fetch_user_info="true"
        facebook:login_text=""
        facebook:logout_text="" />

    <TextView
        android:id="@+id/tv_radio_setting_login"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_centerHorizontal="true"
        android:background="@drawable/drawable_radio_setting_loginbtn"
        android:gravity="center"
        android:padding="10dp"
        android:textColor="@android:color/white"
        android:textSize="18sp" />
</FrameLayout>

याद रखना चाहिए

1> com.facebook.widget.LoginButton और TextView ऊँचाई / चौड़ाई समान

2> 1 declate com.facebook.widget.LoginButton तो TextView

3> TextView के क्लिक-श्रोता का उपयोग करके लॉगिन / लॉगआउट करने के लिए


1

इसका एक ट्रिक नहीं एक उचित तरीका है।

  • एक रिलेटिव लेआउट बनाएं।
  • अपने facebook_botton को परिभाषित करें।
  • अपने कस्टम डिज़ाइन बटन को भी परिभाषित करें।
  • उन्हें ओवरलैप करें।
<RelativeLayout android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp">
    <com.facebook.login.widget.LoginButton
    xmlns:facebook="http://schemas.android.com/apk/res-auto"
    android:id="@+id/login_button"
    android:layout_width="300dp"
    android:layout_height="100dp"
    android:paddingTop="15dp"
    android:paddingBottom="15dp" />
    <LinearLayout
    android:id="@+id/llfbSignup"
    android:layout_width="300dp"
    android:layout_height="50dp"
    android:background="@drawable/facebook"
    android:layout_gravity="center_horizontal"
    android:orientation="horizontal">
    <ImageView
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:src="@drawable/facbk"
    android:layout_gravity="center_vertical"
    android:layout_marginLeft="10dp" />
    <View
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:background="@color/fullGray"
    android:layout_marginLeft="10dp"/>
    <com.yadav.bookedup.fonts.GoutamBold
    android:layout_width="240dp"
    android:layout_height="50dp"
    android:text="Sign Up via Facebook"
    android:gravity="center"
    android:textColor="@color/white"
    android:textSize="18dp"
    android:layout_gravity="center_vertical"
    android:layout_marginLeft="10dp"/>
    </LinearLayout>
</RelativeLayout>

1

यह बहुत सरल है। जैसे लेआउट फ़ाइल में एक बटन जोड़ें

<Button
   android:layout_width="200dp"
   android:layout_height="wrap_content"
   android:text="Login with facebook"
   android:textColor="#ffff"
   android:layout_gravity="center"
   android:textStyle="bold"
   android:onClick="fbLogin"
   android:background="@color/colorPrimary"/>

और onClick जगह पर LoginManager के रजिस्टरकॉलबैक () विधि को स्वचालित रूप से निष्पादित करने वाली इस विधि का उपयोग करें।

  public void fbLogin(View view)
{
    LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("user_photos", "email", "public_profile", "user_posts" , "AccessToken"));
    LoginManager.getInstance().logInWithPublishPermissions(this, Arrays.asList("publish_actions"));
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>()
            {
                @Override
                public void onSuccess(LoginResult loginResult)
                {
                    // App code
                }

                @Override
                public void onCancel()
                {
                    // App code
                }

                @Override
                public void onError(FacebookException exception)
                {
                    // App code
                }
            });
}

1
<FrameLayout
    android:id="@+id/FrameLayout1"
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:layout_marginStart="132dp"
    android:layout_marginTop="12dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/logbu">


    <ImageView
        android:id="@+id/fb"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/fb"
        android:onClick="onClickFacebookButton"
        android:textAllCaps="false"
        android:textColor="#ffffff"
        android:textSize="22sp" />

    <com.facebook.login.widget.LoginButton

        android:alpha="0"  <!--***SOLUTION***-->
        android:id="@+id/buttonFacebookLogin"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="45sp"
        android:visibility="visible"
        app:com_facebook_login_text="Log in with Facebook" />

</FrameLayout>

जावा और कोटलिन दोनों के लिए एकीकृत फेसबुक बटन को अनुकूलित करने का सबसे आसान तरीका



-1

उचित और साफ तरीका

नीचे दिए गए उत्तरों की जाँच करने के बाद, ऐसा लगता है कि वे एक प्रकार के हैक हैं जो आपकी आवश्यकता के लिए इसे और अधिक उपयुक्त बनाने के लिए लॉगिन बटन दृश्य को संपादित करने पर निर्भर हैं।

डेमो छवि

उसी स्थिति में होने के कारण, मैं फेसबुक लॉगिन बटन को कुशलता से कस्टमाइज़ करने में सफल रहा।

<mehdi.sakout.fancybuttons.FancyButton
   android:id="@+id/facebook_login"
   android:layout_width="wrap_content"
   android:layout_height="45dp"
   android:paddingLeft="10dp"
   android:paddingRight="10dp"
   app:fb_radius="2dp"
   app:fb_iconPosition="left"
   app:fb_fontIconSize="20sp"
   app:fb_iconPaddingRight="10dp"
   app:fb_textSize="16sp"
   app:fb_text="Facebook Connect"
   app:fb_textColor="#ffffff"
   app:fb_defaultColor="#39579B"
   app:fb_focusColor="#6183d2"
   app:fb_fontIconResource="&#xf230;"
   android:layout_centerVertical="true"
   android:layout_centerHorizontal="true" />

और इस तरह onClickListener को लागू करें

FacebookLogin.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
      if (AccessToken.getCurrentAccessToken() != null){
         mLoginManager.logOut();
      } else {
         mAccessTokenTracker.startTracking();
         mLoginManager.logInWithReadPermissions(MainActivity.this,              Arrays.asList("public_profile"));
      }
   }
});

आप पूरा स्रोत कोड पा सकते हैं: http://medyo.github.io/customize-the-android-facebook-login-on-android


आधिकारिक बटन को बदलने की जरूरत है, अपने खुद के बटन को जोड़ने के लिए नहीं
शादाब के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.