iPhone应用程序中的Facebook-Api publish_stream问题

时间:2010-09-03 08:01:58

标签: iphone objective-c facebook

我已将Facebook Connect添加到我的新iPhone应用程序中。一切都很完美,没问题。

但是,在这个应用程序中,我需要在用户的墙上发布而不提示任何对话框。 我在Facebook文档中搜索过,根据我的理解,如果我要求用户给我正确的权限(在本例中为publish_stream),则不再出现对话框。

但是尽管如此,这个方框仍然出现了。

我希望你能帮助我。

谢谢。

P.S。抱歉我的英文不好

2 个答案:

答案 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);

再次感谢你。