我已将Facebook Connect添加到我的新iPhone应用程序中。一切都很完美,没问题。
但是,在这个应用程序中,我需要在用户的墙上发布而不提示任何对话框。 我在Facebook文档中搜索过,根据我的理解,如果我要求用户给我正确的权限(在本例中为publish_stream),则不再出现对话框。
但是尽管如此,这个方框仍然出现了。
我希望你能帮助我。
谢谢。
P.S。抱歉我的英文不好
答案 0 :(得分:1)
获取publish_stream权限后,请使用图形API。您发布POST:
https://graph.facebook.com/ID/feed
此iPhone SDK本身不支持此功能,您必须自己实现此功能。您需要确保创建正确的JSON编码参数并确保它们被正确转义。 一个好的开始就是here。
答案 1 :(得分:0)
谢谢! 所以,如果我理解得很好,我必须做这样的事情:
使用此框架http://code.google.com/p/json-framework/添加JSON支持。
这段代码:
SBJSON *json = [SBJSON new];
json.humanReadable = YES;
NSString *service = @"NameService";
NSMutableDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
@"MessaggeFromMyApp",@"message",
@"http://www.sample.com",@"link",
@"nomeOfTheLink",@"name",
@"captionOfTheLink",@"caption",
@"descriptionofTheLink",@"description",
@"MyDistrict",@"value",
@"2",@"txs_Action",
nil];
//Pass it twice to escape quotes
NSString *jsonString = [NSString stringWithFormat:@"%@", [params JSONFragment], nil];
NSString *changeJSON = [NSString stringWithFormat:@"%@", [jsonString JSONFragment], nil];
NSLog(jsonString);
NSLog(changeJSON);
NSString *requestString = [NSString stringWithFormat:@"{\"id\":15,\"method\":\"%@\",\"params\":[%@]}",service,changeJSON,nil];
NSLog(requestString);
NSData *requestData = [NSData dataWithBytes: [requestString UTF8String] length: [requestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"https://graph.facebook.com/me/feed"]];
NSString *postLength = [NSString stringWithFormat:@"%d", [requestData length]];
[request setHTTPMethod: @"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody: requestData];
//Data returned by WebService
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil ];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding];
NSLog(returnString);
再次感谢你。