2013-12-16 4 views
6

हाय मैं Facebook के साथ समस्या है से ऐप्लिकेशन को निकाल दिया:WebDialog शेयर पोस्ट जब उपयोगकर्ता सेटिंग्स

मामला:

1.User कोई फेसबुक ऐप है। WebDialog

3.User के माध्यम से फेसबुक में

2.User लॉगिन शेयर के लिए सभी अनुमतियों को देता है, और शेयरों पोस्ट

4.User Facebook खाते में प्रवेश करती है, अनुप्रयोगों में से, और मेरे ऐप्लिकेशन को निकाल दिया।

5. उपयोगकर्ता फिर से साझा करने की कोशिश करता है।

6. "अज्ञात त्रुटि। कृपया बाद में पुनः प्रयास करें" WebDialog में दिखाई देता है।

क्या इस मामले को ठीक करने का कोई तरीका है? मैंने पाया कि ShareDialog का उपयोग करके मैं इस समस्या से बच सकता हूं जब उपयोगकर्ता के पास फेसबुक ऐप इंस्टॉल होता है, लेकिन मुझे नहीं पता कि उपयोगकर्ता को अपने फोन पर कोई एफबी ऐप नहीं है तो इसे कैसे हल किया जाए।

संवाद दिखाने के लिए इस बात की पुष्टि:

private boolean checkFacebookLogin(){ 
    Session session = Session.getActiveSession(); 
    if(session!=null && session.isOpened()){ 
     return true; 
    } 
    return false; 
} 

की तुलना में मैं अनुमतियों के लिए पूछें कि क्या वे की जरूरत है:

private void performPublish() { 

    Session session = Session.getActiveSession(); 
    pendingAction = PendingAction.POST_STATUS_UPDATE; 

    if (session != null && mCurrentActivity!=null) { 
     if (hasPublishPermission()) { 
      // We can do the action right away. 
      handlePendingAction(); 
     } else { 
      // We need to get new permissions, then complete the action when we get called back. 
      session.requestNewPublishPermissions(new Session.NewPermissionsRequest(mCurrentActivity, PERMISSIONS)); 
     } 
    } 
} 

अंत में मैं WebDialog दिखाने:

WebDialog feedDialog = (
       new WebDialog.FeedDialogBuilder(mCurrentActivity, 
         Session.getActiveSession(), 
         postParams)) 
       .setOnCompleteListener(new OnCompleteListener() { 

        @Override 
        public void onComplete(Bundle values, 
              FacebookException error) { 

        } 

       }) 
       .build(); 
     feedDialog.show(); 

दिखा के बाद WebDialog, यह "अनजान त्रुटि [...]" पाठ के साथ त्रुटि पृष्ठ पर रीडायरेक्ट करता है, मुझे कोई त्रुटि जानकारी नहीं मिली है, इसलिए मैं भी नहीं पता है कि कुछ गलत हो जाता है।

मैंने HelloFacebookSample की कोशिश की, लेकिन अगर उपयोगकर्ता के पास कोई फेसबुक ऐप नहीं है, तो वह फेसबुक संवाद में पोस्ट संपादित नहीं कर सकता है। मैं दोनों मामलों में फेसबुक संवाद देखना चाहता हूं (एफबी ऐप के साथ/बिना स्थापित)।

उत्तर

1
if (FacebookDialog.canPresentShareDialog(this, 
       FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) { 
      FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(
        this) 
        .setLink(// what ever you want to share use here 
        .build(); 
      uiHelper.trackPendingDialogCall(shareDialog.present()); 

     } else { 
      Session session = Session.getActiveSession(); 
      if (session != null && session.isOpened()) { 
       Log.d("Tag", "Success!"); 
       publishFeedDialog(); 
      } else { 
      //ask the user to login . 
      //authButton.performClick(); 
      share = true; 
      // } 
     } 

तो उपरोक्त कोड अमेरिकन प्लान एप्लिकेशन पहले से ही स्थापित किया गया है अगर यह किसी और कि एप्लिकेशन खुल जाएगा से आप Fb LoginButton प्रदर्शन से प्रवेश करने के लिए उपयोगकर्ता पूछने के लिए। performClick()। इसलिए उपयोगकर्ता को एफबी लॉगिन के वेब संवाद पर रीडायरेक्ट कर दिया जाएगा। onLogin सफलता कॉल बैक यू का उपयोग कर साझा कर सकते हैं,

private void publishFeedDialog() { 
    Bundle params = new Bundle(); 
    params.putString("link", 
      ""); 
    WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(
      MenuActivity.this, Session.getActiveSession(), params)) 
      .setOnCompleteListener(new OnCompleteListener() { 

       @Override 
       public void onComplete(Bundle values, 
         FacebookException error) { 
        if (error == null) { 
         // When the story is posted, echo the success 
         // and the post Id. 
         final String postId = values.getString("post_id"); 
         if (postId != null) { 
          Toast.makeText(MenuActivity.this, "Posted", 
            Toast.LENGTH_SHORT).show(); 
         } else { 
          // User clicked the Cancel button 
          Toast.makeText(
            MenuActivity.this 
              .getApplicationContext(), 
            "Publish cancelled", Toast.LENGTH_SHORT) 
            .show(); 
         } 
        } else if (error instanceof FacebookOperationCanceledException) { 
         // User clicked the "x" button 
         Toast.makeText(
           MenuActivity.this.getApplicationContext(), 
           "Publish cancelled", Toast.LENGTH_SHORT) 
           .show(); 
        } else { 
         // Generic, ex: network error 
         Toast.makeText(
           MenuActivity.this.getApplicationContext(), 
           "Error posting story", Toast.LENGTH_SHORT) 
           .show(); 
        } 
       } 

      }).build(); 
    feedDialog.show(); 
} 
+1

दुर्भाग्य है कि एक मुश्किल है:। इस लाइन जब उपयोगकर्ता फेसबुक सेटिंग में हमारे ऐप्लिकेशन को निकाल दिया पारित हो जाता है, तो यह उस संदेश मैं सवाल पर उल्लेख के साथ फ़ीड संवाद प्रदर्शित करेगा । यदि (सत्र! = Null && session.is खोल दिया गया)() – Drake29a

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