5

फेसबुक Android SDK में बनाने नहीं जब मैंफेसबुक Android SDK सत्र openForPublish एक नया सत्र

Session tempSession = new Builder(this).build(); 
Session.setActiveSession(tempSession); 
tempSession.openForRead(new OpenRequest(this).setPermissions(FB_PERMISSIONS)); 

यह एक अमेरिकन प्लान सत्र हो जाता है और हर चीज सामान्य रूप में चलाता है कहते हैं। लेकिन जब मैं के साथ Read को प्रतिस्थापित करता हूं। यानी

Session tempSession = new Builder(this).build(); 
Session.setActiveSession(tempSession); 
tempSession.openForPublish(new OpenRequest(this).setPermissions(FB_PERMISSIONS)); 

यह एक त्रुटि कहता है कि सत्र खाली है, और खाली सत्र में प्रकाशित अनुमतियां नहीं मिल सकती हैं।

क्या आप कृपया बता सकते हैं कि ऐसा क्यों है और इसे संभालने का सबसे अच्छा तरीका क्या होगा?

उत्तर

4

संक्षिप्त उत्तर है, openForPublish को कॉल न करें। अगर आप प्रकाशन अनुमतियों की आवश्यकता है तो कॉल करें खोलें, और उसके बाद अनुरोध करें बाद में प्रकाशित करें।

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

+9

हम्म, बहुत खराब एफबी एसडीके डिजाइन। – rahulg

+0

मुझे एक ही समस्या है, मुझे अपने फेसबुक एप्लिकेशन को उपयोगकर्ता दीवार पर डेटा साझा करने की अनुमति देने के लिए क्या करना है, हर बार जब मैं प्रकाशित करने के लिए सत्र खोलता हूं तो यह इंस्टॉल किए गए एप्लिकेशन से उपयोगकर्ता टोकन नहीं पढ़ता है और मुझसे मेरा प्रवेश करने के लिए कहता है प्रमाण पत्र, तो क्या आपको कोई ऐसी चीज मिली जो मेरी मदद कर सके –

7

मुझे इसे हल करने में कुछ समय लगा, ताकि उपयोगकर्ता फ़ीड पर फेसबुक पर अपने उत्पादों में से किसी एक को साझा करने के लिए एक बटन क्लिक कर सके। मैं नहीं चाहता था कि जब तक वे वास्तव में साझा नहीं करना चाहते, तब तक उन्हें साइन इन करने के लिए कहा जाए, इसलिए मैं वास्तव में केवल प्रकाशित अनुमति चाहता था। निम्नलिखित प्रकाशन अनुमति अनुरोध के साथ प्रारंभिक लॉगिन/पढ़ने अनुमति अनुरोध को रोकता है। यह उपयोगकर्ताओं को पढ़ने के लिए पहले दोबारा संकेत देगा, फिर प्रकाशित करने के लिए, लेकिन अब समाधान की परवाह किए बिना यह आवश्यक है:

Session session = Session.getActiveSession(); 

if (session == null) { 
    session = new Session.Builder(this).setApplicationId("<APP ID HERE>").build(); 

    Session.setActiveSession(session); 
    session.addCallback(new StatusCallback() { 
     public void call(Session session, SessionState state, Exception exception) { 
      if (state == SessionState.OPENED) { 
       Session.OpenRequest openRequest = new Session.OpenRequest(FacebookActivity.this); 
       openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK); 
       session.requestNewPublishPermissions(
         new Session.NewPermissionsRequest(FacebookActivity.this, PERMISSIONS)); 
      } 
      else if (state == SessionState.OPENED_TOKEN_UPDATED) { 
       publishSomething(); 
      } 
      else if (state == SessionState.CLOSED_LOGIN_FAILED) { 
       session.closeAndClearTokenInformation(); 
       // Possibly finish the activity 
      } 
      else if (state == SessionState.CLOSED) { 
       session.close(); 
       // Possibly finish the activity 
      } 
     }}); 
} 

if (!session.isOpened()) { 
    Session.OpenRequest openRequest = new Session.OpenRequest(this); 
    openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK); 
    session.openForRead(openRequest); 
} 
else 
    publishSomething(); 
संबंधित मुद्दे