I have this code that can't send a Facebook request until now.
NSDictionary *firstDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"image", @"Type",
@"http://mysite.com/image.jpg", @"src",
@"http://mysite.com/page.html", @"href",
nil];
NSDictionary *secondDict = [NSDictionary dictionaryWithObjectsAndKeys:
@"image", @"Type",
@"http://mysite.com/image.jpg", @"src",
@"http://mysite.com/page.html", @"href",
nil];
NSArray *mediaArray = [[NSArray alloc] initWithObjects:firstDict, secondDict, nil];
NSArray *keys = [NSArray arrayWithObjects:@"name", @"description", @"href", @"media", nil];
NSArray *objects = [NSArray arrayWithObjects:
[NSString stringWithString:@"MyTitle"],
[NSString stringWithString:@"My caption"],
[NSString stringWithString:@"http://mysite.com/page.html"], mediaArray, nil];
NSDictionary *attachment = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
[[FBRequest requestWithDelegate:self] call:@"facebook.stream.publish" params:attachment];
I took this sample : http://forum.developers.facebook.com/viewtopic.php?pid=145965
But every time I run it, the console shows the following:
{
"api_key" = adc8d70987098sdc;
"call_id" = 23456767;
description = "Any user's description";
format = XML;
href = "http://mysite.com/page.html";
media = (
{
Type = image;
href = "http://mysite.com/page.html";
src = "http://mysite.com/image.jpg";
},
{
Type = image;
href = "http://mysite.com/page.html";
src = "http://mysite.com/image.jpg";
}
);
method = "Facebook.streamPublish";
name = aName;
"session_key" = "d0f98bfs89b7fg7v";
sig = 89v0d9fv879fgv;
ss = 1;
v = "1.0"; }
It shows parentheses for array instead brackets, is that normal?.
Then it displays the error:
*** -[NSCFArray dataUsingEncoding:]: unrecognized selector sent to instance
0x12fcb0 2009-10-30 13:54:27.758 GeoPixr[307:207]
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
*** -[NSCFArray dataUsingEncoding:]: unrecognized selector sent to instance 0x12fcb0
The [session resume] call returns TRUE.
Thanks in advance.
dataUsingEncoding:
is aNSString
method, so presumably, some object is expecting an instance ofNSString
where you passed an array. I presume that FBRequest cannot deal with the array you included in theattachment
dictionary.I couldn't find a way to send the dictionary with an array but there's another class that works for me:
Which brings up a dialog before it sends the information and it's delegate methods lets you know about changes.
I modified your example a little and it works. Here's the working code:
If you're using latest iOS SDK For Facebook then using the below method you can publish image as a stream.
The image part should be another NSDictionary object.
And in the attachment NSDictionary object must include imageShare object as array
This is because if you not include this as an array, Json parser avoid [] brackets as a result the publish functionality will not work. Remember the string needs to be a valid JSON string otherwise facebook api will not publish.