का उपयोग कर .NET से फेसबुक दीवार पर छवि पोस्ट करना मैं एक एप्लिकेशन विकसित करने के लिए फेसबुक्स जावास्क्रिप्ट एपीआई का उपयोग कर रहा हूं जिसे उपयोगकर्ता की दीवार पर एक छवि पोस्ट करने में सक्षम होना आवश्यक है। ऐप के उस भाग को सर्वर-साइड होने की आवश्यकता है जहां तक मैं कह सकता हूं, क्योंकि इसे छवि डेटा को "मल्टीपार्ट/फॉर्म-डेटा" के रूप में पोस्ट करने की आवश्यकता है।ग्राफ़ एपीआई
नोट: यह "पोस्ट" का उपयोग करके सरल संस्करण नहीं है, बल्कि असली "फोटो" विधि है।
http://graph.facebook.com/me/photos
मुझे लगता है कि मैं दो समस्याओं, एक .NET और एक फेसबुक समस्या का सामना कर रहा हूँ:
फेसबुक समस्या: मैं काफी यकीन नहीं है अगर सभी मापदंडों बहुखण्डीय के रूप में भेज दिया जाना चाहिए/फॉर्म-डेटा (access_token और संदेश सहित)। सीयूआरएल उपयोग/आवेदन का उपयोग करने वाला एकमात्र कोड उदाहरण है।
नेट समस्या: मैं नेट से बहुखण्डीय/फार्म डेटा अनुरोधों कभी नहीं जारी किए गए हैं, और मुझे यकीन है कि नेट स्वचालित रूप से माइम-भागों बनाता है, तो नहीं कर रहा हूँ, या मैं कुछ में पैरामीटर एन्कोड करने के लिए है, तो विशेष तरीका।
डीबग करना थोड़ा मुश्किल है, क्योंकि ग्राफ एपीआई से मुझे केवल त्रुटि प्रतिक्रिया "400 - खराब अनुरोध" है। नीचे यह कोड है जब मैंने यह प्रश्न लिखने का फैसला किया था (हाँ, यह थोड़ा वर्बोज़ है :-)
अंतिम उत्तर निश्चित रूप से एक नमूना स्निपेट होगा जो .NET से एक छवि पोस्ट कर रहा है, लेकिन मैं बस सकता हूं कम में।
string username = null;
string password = null;
int timeout = 5000;
string requestCharset = "UTF-8";
string responseCharset = "UTF-8";
string parameters = "";
string responseContent = "";
string finishedUrl = "https://graph.facebook.com/me/photos";
parameters = "access_token=" + facebookAccessToken + "&message=This+is+an+image";
HttpWebRequest request = null;
request = (HttpWebRequest)WebRequest.Create(finishedUrl);
request.Method = "POST";
request.KeepAlive = false;
//application/x-www-form-urlencoded | multipart/form-data
request.ContentType = "multipart/form-data";
request.Timeout = timeout;
request.AllowAutoRedirect = false;
if (username != null && username != "" && password != null && password != "")
{
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential(username, password).GetCredential(new Uri(finishedUrl), "Basic");
}
//write parameters to request body
Stream requestBodyStream = request.GetRequestStream();
Encoding requestParameterEncoding = Encoding.GetEncoding(requestCharset);
byte[] parametersForBody = requestParameterEncoding.GetBytes(parameters);
requestBodyStream.Write(parametersForBody, 0, parametersForBody.Length);
/*
This wont work
byte[] startParm = requestParameterEncoding.GetBytes("&source=");
requestBodyStream.Write(startParm, 0, startParm.Length);
byte[] fileBytes = File.ReadAllBytes(Server.MapPath("images/sample.jpg"));
requestBodyStream.Write(fileBytes, 0, fileBytes.Length);
*/
requestBodyStream.Close();
HttpWebResponse response = null;
Stream receiveStream = null;
StreamReader readStream = null;
Encoding responseEncoding = System.Text.Encoding.GetEncoding(responseCharset);
try
{
response = (HttpWebResponse) request.GetResponse();
receiveStream = response.GetResponseStream();
readStream = new StreamReader(receiveStream, responseEncoding);
responseContent = readStream.ReadToEnd();
}
finally
{
if (receiveStream != null)
{
receiveStream.Close();
}
if (readStream != null)
{
readStream.Close();
}
if (response != null)
{
response.Close();
}
}
धन्यवाद @fltz तक नहीं पहुंचा जा सकता है। अपने उदाहरण को अनुकूलित करके इसे काम करने के लिए प्रबंधित किया गया (कुछ वार्स जहां स्निपेट के दायरे से बाहर घोषित किया गया था)। –
क्या आपका आवेदन दीवार पर एक छवि पोस्ट करता है या इसे एप्लिकेशन के एल्बम में अपलोड करता है? मेरे परीक्षणों में दीवार/फ़ीड पर अपलोड की गई छवि की कोई दृष्टि नहीं थी। – fltz
मैं अभी तक इसके आसपास नहीं मिला है। अब तक मैं इसे केवल दीवार पर देखता हूं जब एप्लिकेशन के लिए डिफ़ॉल्ट एल्बम बनाया जाता है। लेकिन [इस पोस्ट] के अनुसार (http://www.raywenderlich.com/1626/how-to-post-to-a-users-wall-upload-photos-and-add-a-like-button-from- आपका-आईफोन-ऐप) यह संभव होना चाहिए। –