दिलचस्प पोस्ट
जेवीएम के लुकअप स्विच और टेबलस्विच के बीच का अंतर? UIScrollView autolayout बाधाओं का उपयोग नहीं करता है इकाई फ़्रेमवर्क मेरी संग्रहीत प्रक्रिया की कॉलम जानकारी क्यों नहीं देख सकता? कैसे जावास्क्रिप्ट के द्वारा एक मैक कमांड कुंजी को कैप्चर करता है? ऑडियो यूनिट के माध्यम से आईफोन आउटपुट ध्वनि रिकॉर्ड करने में कोई मेरी सहायता कर सकता है I jQuery लोड सामग्री जब पृष्ठ के नीचे-100 पिक्स करने के लिए स्क्रॉल करते हैं, कई घटनाएं निकाल दी गईं टूल: एंड्रॉइड मैनिफेस्ट में जगह नहीं बदले प्रदर्शन – दिनांक। अब () बनाम दिनांक .getTime () MySQL इन बयान के लिए पीडीओ बंधन मूल्य क्यों अस्थिर क्वालिफायर बाहर std :: परमाणु के माध्यम से इस्तेमाल किया है? लिनक्स में सैंडबॉक्स में एक अविश्वसनीय सी प्रोग्राम चलाएं जो फाइल खोलने, फोर्किंग आदि से रोकता है? ब्लैकबेरी में छवि बटन Laravel 4 और Laravel 5 उपयोगकर्ता प्रमाणीकरण के लिए कस्टम पासवर्ड फ़ील्ड नाम कैसे बदलना है कैसे एक ऐप में एकाधिक विजेट जोड़ने के लिए? क्या जावास्क्रिप्ट में अंतरफलक प्रकार है (जैसे कि जावा का 'इंटरफेस')?

कस्टम फेसबुक लॉगिन बटन – एंड्रॉइड

मैं इस ट्यूटोरियल का पालन ​​कर रहा हूँ लेकिन अभी तक मैं इसे काम नहीं कर सकता, हालांकि यह एक साल पहले या उससे बहुत कुछ है …

मैं androidStudo 1.2.2 और FacebookSDK 4 का उपयोग कर रहा हूँ।

मैं एक कस्टम बटन का उपयोग करके फेसबुक में एक सरल लॉगिन चाहता हूं, जैसे कि इस चित्र में दिखाया गया है:

उदाहरण

अब, ट्यूटोरियल से उदाहरण में, Session चर के साथ मुझे समस्या आ रही है, यह कहता है कि यह इसे हल नहीं कर सकता है, न ही getActivity()

क्या इसने FacebookSDK4.0 पर यह कोशिश की?

क्या यह सही दृष्टिकोण है या शायद कुछ और अपडेट किया गया है?

अग्रिम में धन्यवाद!

Solutions Collecting From Web of "कस्टम फेसबुक लॉगिन बटन – एंड्रॉइड"

चरण 1: पहले फ़्रेम लेआउट जोड़ें और फेसबुक बटन दृश्यता = "चला गया" और अपना कस्टम बटन जोड़ें अपने मुख्य लेआउट में xmlns:facebook="http://schemas.android.com/apk/res-auto" डाल करने में भूल गए xmlns:facebook="http://schemas.android.com/apk/res-auto"

 <FrameLayout 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:id="@+id/fb" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#416BC1" android:onClick="onClick" android:text="FaceBook" android:textColor="#ffffff" android:textStyle="bold" /> </FrameLayout> 

चरण 2: लेआउट को onCreate से पहले onCreate में FacebookSdk आरंभ FacebookSdk

FacebookSdk.sdkInitialize (this.getApplicationContext ());

चरण 3: इसे अपने जावा फ़ाइल में जोड़ें।

 callbackManager = CallbackManager.Factory.create(); fb = (Button) findViewById(R.id.fb); loginButton = (LoginButton) findViewById(R.id.login_button); List < String > permissionNeeds = Arrays.asList("user_photos", "email", "user_birthday", "public_profile", "AccessToken"); loginButton.registerCallback(callbackManager, new FacebookCallback < LoginResult > () {@Override public void onSuccess(LoginResult loginResult) { System.out.println("onSuccess"); String accessToken = loginResult.getAccessToken() .getToken(); Log.i("accessToken", accessToken); GraphRequest request = GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {@Override public void onCompleted(JSONObject object, GraphResponse response) { Log.i("LoginActivity", response.toString()); try { id = object.getString("id"); try { URL profile_pic = new URL( "http://graph.facebook.com/" + id + "/picture?type=large"); Log.i("profile_pic", profile_pic + ""); } catch (MalformedURLException e) { e.printStackTrace(); } name = object.getString("name"); email = object.getString("email"); gender = object.getString("gender"); birthday = object.getString("birthday"); } catch (JSONException e) { e.printStackTrace(); } } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,email,gender, birthday"); request.setParameters(parameters); request.executeAsync(); } @Override public void onCancel() { System.out.println("onCancel"); } @Override public void onError(FacebookException exception) { System.out.println("onError"); Log.v("LoginActivity", exception.getCause().toString()); } }); 

चरण 4: निम्नलिखित कोड जोड़ने के लिए मत भूलना

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

चरण 5: अपने कस्टम बटन को FacebookLogin बटन क्लिक पर क्लिक करें।

 public void onClick(View v) { if (v == fb) { loginButton.performClick(); } } 

चरण 6: प्रोग्राम से लॉगआउट करने के लिए इसका उपयोग करें

। LoginManager.getInstance () लॉगआउट ();

चरण 7: आप उपयोगकर्ता द्वारा प्रोफ़ाइल में लॉग इन कर सकते हैं या नहीं।

 profile = Profile.getCurrentProfile().getCurrentProfile(); if (profile != null) { // user has logged in } else { // user has not logged in } 

चयनित उत्तर का आईएमओ हिस्सा एक तरह का काम है- उचित समाधान के आसपास नहीं। तो इसे उचित बनाने के लिए क्या बदला जाना चाहिए निम्नलिखित है:

  1. अपने XML से "com.facebook.login.widget.LoginButton" से छुटकारा पाएं

     <com.facebook.login.widget.LoginButton android:id="@+id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> 
  2. अपने जावा कोड में "लॉगिनबटन" के सभी संदर्भों से छुटकारा पाएं

  3. फेसबुक का "लॉगिन प्रबंधक" वर्ग का उपयोग करें जो इस उद्देश्य के लिए है:

     @Override protected void onCreate(Bundle savedInstanceState) { // Some code callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback( callbackManager, new FacebookCallback < LoginResult > () { @Override public void onSuccess(LoginResult loginResult) { // Handle success } @Override public void onCancel() { } @Override public void onError(FacebookException exception) { } } ); } public void onClick(View v) { if (v == fb) { LoginManager.getInstance().logInWithReadPermissions( this, Arrays.asList("user_photos", "email", "user_birthday", "public_profile") ); } } // this part was missing thanks to wesely @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); } 

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

 <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 के registercallback () विधि को इस विधि को स्वचालित रूप से निष्पादित किया गया।

पसंद:

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

मज़े करो

(कोई टिप्पणी जोड़ने के लिए पर्याप्त प्रतिष्ठा नहीं है …)

मैंने @ शेबाक्स के उत्तर की कोशिश की, जब तक मैं इसे जोड़ नहीं करता तब तक कॉलबैक प्राप्त नहीं कर सकता

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

तो यह ठीक काम करता है