9

मैं फेसबुक (https://developers.facebook.com/docs/android/share) द्वारा फेसबुक एंड्रॉइड शेयरिंग ट्यूटोरियल का पालन कर रहा हूं। ऐप ठीक चलाता है और मैं डेमो शेयर बटन पर एक क्लिक के साथ फेसबुक के साथ लॉगिन कर सकता हूं। user_likes, user_friends, user_status, basic_info फेसबुक एसडीके 3.8: अनुमति publ_actions वापस नहीं लौटा

  • अब, मैं कुछ साझा करना चाहते हैं:

    1. फेसबुक
    2. फेसबुक सत्र वस्तु अद्यतन हो जाता है और निम्न अनुमतियों सत्र वस्तु के भीतर सहेजे जाते हैं के साथ लॉग इन: तो यह मेरे ऐप की प्रक्रिया है। हालांकि यह सही होने के लिए वहाँ होना चाहिए लगता है,

      public class MainActivity extends Activity { 
      
          private Button shareButton; 
          private UiLifecycleHelper uiHelper; 
          private static final List<String> PERMISSIONS = Arrays.asList("publish_actions"); 
          private static final String PENDING_PUBLISH_KEY = "pendingPublishReauthorization"; 
          private boolean pendingPublishReauthorization = false; 
      
      ... 
          private void publishStory() { 
           Session session = Session.getActiveSession(); 
           if(session != null) { 
            List<String> permissions = session.getPermissions(); 
            if(!isSubsetOf(PERMISSIONS, permissions)) { 
             pendingPublishReauthorization = true; 
             Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS); 
      //Request the new permission here. The answer is processed in onSessionStateChange() method 
             session.requestNewPublishPermissions(newPermissionsRequest); 
             return; 
            } 
      
      ... 
      
          private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
      //since the session is already open we enter this if branch 
           if (state.isOpened()) { 
            shareButton.setVisibility(View.VISIBLE); 
      //The result of state.equals(SessionState.OPENED_TOKEN_UPDATED) is false which indicates that the session object has not been updated (as far as I understand the fb api) 
            Log.e(TAG, "state.equals(SessionState.OPENED_TOKEN_UPDATED) = " + state.equals(SessionState.OPENED_TOKEN_UPDATED)); 
      //Output all the current permission the session has (publish_actions is not included here) 
            List<String> permissions = session.getPermissions(); 
            Iterator<String> it = permissions.iterator(); 
            Log.e(TAG, "Content of list:"); 
            while(it.hasNext()) 
             Log.e(TAG, "permission = " + it.next()); 
      //Since the OPENED_TOKEN_UPDATED has not been updated nothing further happens here    
            if (pendingPublishReauthorization && state.equals(SessionState.OPENED_TOKEN_UPDATED)) { 
             pendingPublishReauthorization = false; 
             publishStory(); 
            } 
           } else if (state.isClosed()) { 
            shareButton.setVisibility(View.INVISIBLE); 
           } 
          } 
      

      तो: इसलिए उपयोगकर्ता एक साझा करें बटन पर क्लिक करता है और एक अतिरिक्त अनुमति के लिए एक अनुरोध बुलाया publish_actions

    निम्नलिखित कोड किया जाता है इस अनुरोध करता है कुछ शेष त्रुटि। Publ_actions अनुमति अनुमति नहीं दी गई है हालांकि मुझे समझ में नहीं आता क्यों। केवल मौजूदा अनुमतियां publish_actions रहती हैं।

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

    अद्यतन: मैंने अतिरिक्त रूप से गिटूब से निम्नलिखित ग्रिस्ट की कोशिश की: https://gist.github.com/vishalpawale/5556996 यह नमूना कोड उसी कारण से विफल रहता है। इसे कोई प्रकाशन_एक्शन अनुमति नहीं मिलती है। फेसबुक एसडीके में एक वास्तविक बग लगता है?

  • +0

    मुझे यकीन नहीं है, लेकिन अब मैं इस समस्या को हल करने की कोशिश कर रहा हूं। स्पष्ट रूप से फेसबुक ने एपीआई के माध्यम से पोस्ट प्रकाशित करने की क्षमता वापस ले ली। क्या आपको कोई समाधान मिला? – Wordica

    +0

    मैंने डेवलपर्स का पालन किया .facebook.com/docs/android/share उदाहरण उपयोगकर्ता की दीवार पर पोस्ट करने के लिए। यदि मैं ऐप डेवलपर ईमेल का उपयोग कर फेसबुक पर लॉगिन करता हूं तो यह ठीक काम करता है। गैर डेवलपर्स के साथ, मुझे अनुमति नहीं मिलती है ... क्या आपके लिए भी ऐसा ही होता है? –

    +0

    एक ही समस्या, publ_action अनुमति नहीं दी गई। –

    उत्तर

    1

    के लिए अनुमति प्रकाशित आप एप्लिकेशन सेटिंग में अनुरोध भेजने और समीक्षा के लिए भेजना चाहिए, देखना https://developers.facebook.com/docs/apps/review/

    0

    अगर आप फेसबुक एसडीके 3.14.x उपयोग कर रहे हैं + THN अप्रैल 30 वीं फेसबुक आवेदन के परीक्षण और सबमिट करने की प्रक्रिया बदल गया है के बाद। अनुमति से संबंधित उत्तर पोस्ट किया गया। this लिंक

    0

    हमारे यहां एक ही समस्या थी। का उपयोग कर

    प्रयास करें: यह केवल फेसबुक के साथ काम करेंगे

    Session.getActiveSession().refreshPermissions(); 
    

    यह

    List<String> permissions = session.getPermissions(); 
    

    पर उपलब्ध अनुमतियों की सूची ताज़ा होगी डेवलपर्स उपयोगकर्ताओं या परीक्षण उपयोगकर्ताओं फेसबुक अनुप्रयोग डैशबोर्ड के माध्यम से पंजीकृत पंजीकृत।

    यह हमारे लिए काम करता है।

    0

    यह केवल पढ़ने की अनुमति नहीं, बल्कि पढ़ने की अनुमति देता है। नीचे

    final Bundle permBundle = new Bundle(); 
        permBundle.putCharSequence("permission", "publish_actions"); 
        GraphRequest request = new GraphRequest(
          AccessToken.getCurrentAccessToken(), 
          "/me/permissions", permBundle, HttpMethod.GET, 
          new GraphRequest.Callback() { 
           @Override 
           public void onCompleted(GraphResponse graphResponse) { 
            Log.d(TAG, "response2: " + graphResponse.getJSONObject()); 
            try { 
             JSONArray permList = (JSONArray) graphResponse.getJSONObject().get("data"); 
             if(permList.length() == 0){ 
              // no data for perms, hence asking permission 
              askForFBPublishPerm(); 
             }else{ 
              JSONObject permData = (JSONObject) permList.get(0); 
              String permVal = (String) permData.get("status"); 
              if(permVal.equals("granted")){ 
               postToFB(); 
              }else{ 
               askForFBPublishPerm(); 
              } 
             } 
            } catch (JSONException e) { 
             Log.d(TAG, "exception while parsing fb check perm data" + e.toString()); 
            } 
    
           } 
          } 
        ); 
        request.executeAsync(); 
    
    संबंधित मुद्दे