2015-04-18 3 views
6

मेरे पास निम्न कोड है। यह फेसबुक के एंड्रॉइड एपीआई में लॉग इनबटन के कॉलबैक फ़ंक्शन का एक सरल परीक्षण है।एंड्रॉइड फेसबुक लॉग इन बटन कॉलबैक रद्द करने के लिए कूदता है

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    setContentView(R.layout.activity_main); 
    callbackManager = CallbackManager.Factory.create(); 
    LoginButton loginButton = (LoginButton)findViewById(R.id.login_button); 
    loginButton.setReadPermissions("user_friends"); 
    loginButton.setReadPermissions("email"); 
    loginButton.setReadPermissions("public_profile"); 
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 

     @Override 
     public void onSuccess(LoginResult loginResult) { 
      Log.e("SUCCESS", "LOGIN SUCCESSFUL"); 
     } 

     @Override 
     public void onCancel() { 
      Log.e("CANCEL", "Cancelled"); 
     } 

     @Override 
     public void onError(FacebookException e) { 
      Log.e("ERROR", "Facebook Exception"); 
     } 
    }); 
} 

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

केवल समस्या जब भी मैं loginButton क्लिक करें, एक संवाद बाहर "रद्द करें" पाठ प्रतीत होता है कि और एक संक्षिप्त पल के लिए गायब हो जाता है, और फिर logcat प्रिंट है। मैं इस त्रुटि को ठीक नहीं कर सकता, और मैं रद्द करने पर क्लिक नहीं कर रहा हूं, क्योंकि वह संवाद बस दिखाता है और तुरंत गायब हो जाता है।

कृपया इसे ठीक करने में मेरी सहायता करें?

+0

यह त्रुटि या सफलता मुद्रण नहीं है? –

+0

नहीं, यह केवल कैंसल – theLonelyYak

+0

प्रिंट कर रहा है क्या यह हमेशा कैंसल() पर जाता है? –

उत्तर

9

फेसबुक के रूप में अब उन अनुप्रयोगों की समीक्षा की आवश्यकता है जो प्रकाशन पहुंच का उपयोग करते हैं, आपको फेसबुक डेवलपर कंसोल में लॉग इन करने की आवश्यकता है, ऐप्स अनुभाग में अपने ऐप का चयन करें, भूमिकाओं पर क्लिक करें और परीक्षक (या व्यवस्थापक) भूमिका जोड़ें। इसके बाद आपको उचित पहुंच टोकन प्राप्त करने में सक्षम होना चाहिए।

+0

आप मेरा दिन गेब्रियल बचाओ :) धन्यवाद! – anthony

+0

आपका बहुत स्वागत है;)) – gabriel

+0

इससे मुझे भी मदद मिली। धन्यवाद –

3

मुझे इस समस्या का सामना करना पड़ा।

यह मामला है कि अगर आप (logInWithReadPermissions या logInWithPublishPermissions का प्रयोग करके) के लिए लॉग इन करने के लिए आप पहले से ही पहुंच टोकन (आवश्यक अनुमतियों के सभी के साथ) हैं तो प्रयास तो onCancel कॉलबैक निष्पादित किया जाता है हो रहा है।

आप में क्योंकि उपयोगकर्ता पहले से ही में लॉग ऑन है उपयोगकर्ता प्रवेश करने नहीं किया जाना चाहिए कहने के लिए। यह पहली के लिए जाँच करें है।

3

मेरे समाधान:

मैं एक ही समस्या थी। कॉलबैक हमेशा onCancel() विधि द्वारा प्राप्त किया गया था।

मैं एक मूल लॉगिन (जिसका अर्थ है कि मैं फेसबुक ऐप का उपयोग कर रहा था) कर रहा था, इसलिए एक काम-साथी से बात करने के बाद, मैंने यह जांचने के लिए अपने फेसबुक ऐप को अनइंस्टॉल किया कि कोई गैर-देशी लॉगिंग संभव है या नहीं और मेरा ऐप चलाएं। मेरे आश्चर्य के लिए, onCancel() विधि पर कॉलबैक प्राप्त करने से पहले, एक संदेश ने मुझे सूचित किया कि मेरे फेसबुक ऐप आईडी गलत था, इसलिए यह सब कुछ था। मैंने https://developers.facebook.com/apps से प्राप्त एक के बजाय गलत गलती की थी।

अब यह काम करता है और अनुमति संवाद भी प्रदर्शित करता है। इसका मेरा मतलब यह है कि हमेशा देशी और गैर-मूल की कोशिश करें। शायद आप उनमें से किसी से जवाब प्राप्त करें।

+0

आप कोड में उस फेसबुक ऐप आईडी का उपयोग कहां करते हैं? –

3

इस उत्तर ने मुझे इसी स्थिति में मदद की।

https://stackoverflow.com/a/31625256/1987045

कॉल LoginManager.getInstance().logOut(); में एक संकेत प्रयास करने से पहले।

संबंधित मुद्दे