दिलचस्प पोस्ट
मैं iPhone पर एक लेखन योग्य पथ कैसे प्राप्त करूं? IntelliJ आइडिया के साथ एसबीटी परियोजना कैसे तैयार करें? इंटरफ़ेस बनाम सार कक्षा (सामान्य ओ ओ) आप Google Chrome में JavaScript डीबगर कैसे लॉन्च करते हैं? क्या स्थानीय फाइल पर एक्सएसएल ट्रांस्फ़ॉर्म करने के लिए क्रोम बनाया जा सकता है? का उपयोग करने के लिए एक पासवर्ड पास करने की उम्मीद एसएसएच UITableView चेकमार्क केवल एक समय में एक पंक्ति mysql sproc में तालिका नाम के लिए एक चर का उपयोग करें विशेष डॉलर के संकेत शेल चर क्या हैं? आंशिक रूप से सीआरएल के साथ एक दूरस्थ फ़ाइल डाउनलोड करने के लिए कैसे? एंड्रॉइड में छवि के कुछ भाग को कैसे धुँधला जा सकता है? एंड्रॉइड 4.0 में डिस्क्लुलाकूचे का प्रयोग करना ओपन कैश विधि के लिए प्रदान नहीं करता है बूटस्ट्रैप 4 में वर्टिकल संरेखित केंद्र SHA512 बनाम ब्लॉफ़िश और बीक्रिप्ट पीएचपी की जांच अगर फाइल एक छवि है

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

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

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

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

उदाहरण

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

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

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

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

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

चरण 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); } 

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