2013-11-25 9 views
8

enter image description hereफेसबुक प्रोग्राम के रूप में एक बड़ी तस्वीर

मैं एक नकली फेसबुक पेज (मनोरंजन पेज) बना लिया है के साथ एक फेसबुक पेज पर पोस्ट। संलग्न छवि के बाईं ओर, मैंने मैन्युअल रूप से पहली पोस्ट बनाई है ( बड़ी तस्वीर के साथ नीचे एक), और एक प्रोग्रामेटिक रूप से (छोटी तस्वीर के साथ ऊपर वाला)।

कोड मैं छोटे तस्वीर के लिए इस्तेमाल इस तरह दिखता है:

FB.api(
     'https://graph.facebook.com/[myAppId]/feed', 
     'post', 
     { 
      message: 'this is a grumpy cat', 
      description: "This cat has been lost for decades now, please call at 654321486", 
      picture: "http://laughingsquid.com/wp-content/uploads/grumpy-cat.jpg" 

     }, 
     function (response) { 
      if (!response) { 
       alert('Error occurred.'); 
      } else if (response.error) { 
       document.getElementById('result').innerHTML = 
        'Error: ' + response.error.message; 
      } else { 
       document.getElementById('result').innerHTML = 
        '<a href=\"https://www.facebook.com/' + response.id + '\">' + 
         'Story created. ID is ' + 
         response.id + '</a>'; 
      } 
     } 
    ); 

लेकिन मैं इसके साथ खुश नहीं हूँ: आवेदन मैं पर काम कर रहा हूँ, खो जानवरों की एक सूची बनाने तो यह बड़ी तस्वीरों के साथ बहुत अधिक होगा।

मुझे फेसबुक डेवलपर पृष्ठों पर इसे कैसे करना है इसका कोई उदाहरण नहीं मिला। मेरा मानना ​​है कि यह संभव है, लेकिन मुझे अभी तक यह नहीं मिला है। क्या आप पहले से ही इस समस्या से गुजर चुके हैं?

उत्तर

7

अंत में, मैंने यह किया! मैं समाधान पोस्ट कर रहा हूं, मुझे सही दिशा में इंगित करने के लिए cdbconcepts के लिए धन्यवाद। दस्तावेज़ फिर से पढ़ने के बाद:

https://developers.facebook.com/docs/reference/api/photo/

वे कहते हैं कि: "आप भी एक तस्वीर तस्वीर के URL के साथ यूआरएल परम प्रदान करके प्रकाशित कर सकते हैं।" यूआरएल को उसी उदाहरण पर होना जरूरी नहीं है, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है, और यह जेएस-एसडीके के साथ काम करता है।

<html> 
<head> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
</head> 
<body> 

<div id="fb-root"></div> 
<script> 

var appId = 'Replace with your appId'; 

window.fbAsyncInit = function() { 
    FB.init({ 
     appId: appId, 
     status: true, // check login status 
     cookie: true, // enable cookies to allow the server to access the session 
     xfbml: true // parse XFBML 
    }); 


    var options = { 
     scope: 'manage_pages, publish_stream' 
    }; 

    FB.Event.subscribe('auth.authResponseChange', function (response) { 
     if (response.status === 'connected') { 
      testAPI(); 
     } else if (response.status === 'not_authorized') { 
      FB.login(function() { 
      }, options); 
     } else { 
      FB.login(function() { 
      }, options); 
     } 
    }); 
}; 

// Load the SDK asynchronously 
(function (d) { 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) { 
     return; 
    } 
    js = d.createElement('script'); 
    js.id = id; 
    js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
}(document)); 

// Here we run a very simple test of the Graph API after login is successful. 
// This testAPI() function is only called in those cases. 
function testAPI() { 
    console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function (response) { 
     console.log('Good to see you, ' + response.name + '.'); 
    }); 
} 

function error(msg) { 
    document.getElementById('result').innerHTML = 'Error: ' + msg; 
} 

function postApi() { 

    var myPageID = '484364788345193'; 
    var targetPageName = 'Entertainment page of ling'; 
    var pathToImg = 'http://laughingsquid.com/wp-content/uploads/grumpy-cat.jpg'; 
    var accessToken = null; 

    FB.api(
     'https://graph.facebook.com/me/accounts', 
     function (response) { 
      if (!response || response.error) { 
       console.log(response); 
       error('Error occured'); 
      } else { 
       console.log(response); 
       for (var i in response.data) { 
        if (targetPageName === response.data[i].name) { 
         accessToken = response.data[i].access_token; 
        } 
       } 
       if (accessToken) { 
        FB.api(
         'https://graph.facebook.com/' + myPageID + '/photos', 
         'post', 
         { 
          url: pathToImg, 
          access_token: accessToken, 
          message: "Tadaam" 
         }, 
         function (response) { 
          if (!response || response.error) { 
           console.log(response); 
           error('Error occured'); 
          } else { 
           console.log(response); 
           alert("PostId: " + response.id); 
          } 
         } 
        ); 
       } 
       else { 
        error("Page not found in the accounts: " + targetPageName); 
       } 
      } 
     } 
    ); 

} 


function logout() { 
    FB.logout(); 
} 


$(document).ready(function() { 
    $("#logout").click(function() { 
     logout(); 
    }); 
    $("#post1").click(function() { 
     postApi(); 
    }); 
}); 


</script> 

<!-- 
    Below we include the Login Button social plugin. This button uses the JavaScript SDK to 
    present a graphical Login button that triggers the FB.login() function when clicked. --> 

<fb:login-button show-faces="true" width="200" max-rows="1"></fb:login-button> 


<button id="logout">Logout</button> 
<button id="post1">post something</button> 
<div id="result"></div> 
</body> 
</html> 
+0

बहुत बढ़िया, आपको यह सुनकर खुशी हुई! – chrisboustead

9

ऐसी कुछ चीजें हैं जिन्हें आपको प्राप्त करने के लिए आपको करने की आवश्यकता होगी। मैं 100% निश्चित नहीं हूं कि जेएस-एसडीके आपको दूसरा कदम करने की अनुमति देगा, लेकिन यदि आवश्यक हो तो आप सर्वर साइड एसडीके का उपयोग कर सकते हैं।

एप्लिकेशन को manage_pages और publish_stream अनुमति का अनुरोध करने की आवश्यकता होगी। फिर /{user-id}/accounts पर कॉल करें जो अधिकृत उपयोगकर्ता प्रबंधित सभी पृष्ठों को वापस कर देगा, और उनके संबंधित page access tokens

एक चर में स्टोर पृष्ठ एक्सेस टोकन उस पृष्ठ के लिए लौटाया गया है जिसे आप पोस्ट करना चाहते हैं। उस फोटो को सेट करें जिसे आप source पैरामीटर के रूप में अपलोड करना चाहते हैं (कोड चलाने वाले सर्वर के लिए स्थानीय होना चाहिए) और POST पेज एक्सेस टोकन का उपयोग करके /{page_id}/photos पर अनुरोध करें (एप्लिकेशन एक्सेस टोकन नहीं!)।

तो यह की तर्ज पर होगा:

FB.api('/{page_id}/photos', 'post', { source: 'path/to/image.jpg', access_token: {page_access_token}, message: 'hey heres a photo' }, function(response) { 
    if (!response || response.error) { 
    alert('Error occured'); 
    } else { 
    alert('Post ID: ' + response.id); 
    } 
}); 

मेरा मानना ​​है कि आवेदन भी जब आरंभ fileUpload के रूप में सच को निर्दिष्ट करने की जरूरत है।

मुझे यह करने के लिए मेरे PHP कोड को साझा करने में खुशी होगी अगर यह आपके लिए सहायक होगा।

+0

ठीक धन्यवाद, मुझे लगता है कि कोशिश करेंगे:

तो यहाँ अंतिम कोड है कि मेरे लिए काम करता है। और हाँ, मैं php का भी उपयोग करता हूं इसलिए एक php स्निपेट उपयोगी होगा। – ling

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